SELECT REPLACE(TRANSLATE(LTRIM(RTRIM('!! ATHEN !!','!'), '!'), 'AN', '**'),'*','TROUBLE') FROM DUAL;
我对上述问题如何运作感到困惑?
答案 0 :(得分:8)
SELECT
REPLACE(
TRANSLATE(
LTRIM(
RTRIM('!! ATHEN !!','!')
, '!')
, 'AN'
, '**')
,'*'
,'TROUBLE')
FROM DUAL;
它不适用于MySQL。
它会返回一个常量值。 DUAL是一个包含一条记录的系统表。当你实际上没有要查询的表时,它允许你选择一个常量值,因为dual总是在那里。在MySQL中可以省略FROM DUAL,它实际上被添加到MySQL以便与Oracle更兼容。
此查询应执行的操作:
*
和*
。*
替换为'TROUBLE'所以我希望输出类似'TROUBLETHETROUBLE'。
也就是说,当你在Oracle上运行它时。正如Nanne在评论中指出的那样,MySQL不会接受RTRIM中的第二个参数。