这个 SQL 查询是如何工作的?
SELECT REPLACE(TRANSLATE(LTRIM(RTRIM('!! ATHEN !!','!'), '!'), 'AN', '**'),'*','TROUBLE') FROM DUAL;
我对上面的问题感到困惑,这个查询是如何工作的?
SELECT REPLACE(TRANSLATE(LTRIM(RTRIM('!! ATHEN !!','!'), '!'), 'AN', '**'),'*','TROUBLE') FROM DUAL;
I'm confused about above question how this query works ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它不适用于 MySQL。
它将返回一个常量值。 DUAL 是一张只有一条记录的系统表。当您实际上没有可供查询的表时,它允许您选择一个常量值,因为 Dual 始终存在。从 23c 开始,
FROM DUAL
在 MySQL 和 Oracle 中是可选的。这个查询应该做什么:
*
和*
。*
替换为“TROUBLE”,因此我希望输出类似于“TROUBLETHETROUBLE”。
也就是说,当您在 Oracle 上运行它时。正如 Nanne 在评论中指出的那样,MySQL 不会接受 RTRIM 中的第二个参数。
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:
*
and*
.*
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.