How does this SQL query work?
SELECT REPLACE(TRANSLATE(LTRIM(RTRIM('!! ATHEN !!','!'), '!'), 'AN', '**'),'*','TROUBLE') F开发者_开发百科ROM DUAL;
I'm confused about above question how this query works ?
SELECT
REPLACE(
TRANSLATE(
LTRIM(
RTRIM('!! ATHEN !!','!')
, '!')
, 'AN'
, '**')
,'*'
,'TROUBLE')
FROM DUAL;
It doesn't work on MySQL.
It would return a single constant value. DUAL is a system table with one record. It allows you to select a constant value when you don't actually have a table to query from, because dual is always there. FROM DUAL
is optional in MySQL and in Oracle from 23c on.
What this query should do:
- It takes the text '!! ATHEN !!'
- It trims the '!' on both ends (ltrim and rtrim)
- It 'translates' A and N to
*
and*
. - It replaces each
*
with 'TROUBLE'
So I'd expect the output to be something like ' TROUBLETHETROUBLE '.
That is, when you run it on Oracle. MySQL won't accept the second parameter in RTRIM as Nanne pointed out in the comments.
精彩评论