【问题标题】:Meaning of `||` in an SQL SELECT statement`||` 在 SQL SELECT 语句中的含义
【发布时间】:2021-05-28 05:57:32
【问题描述】:

我正在修改一些SQL代码,我遇到了语句:

SELECT 'pilot' || cast(id as string) AS id from ....

|| 在这个声明中做了什么?

我认为它会将falsey 值替换为'pilot';但事实并非如此,它返回 NULL 值。没有任何空字符串,但也没有带有'pilot' 的行。

【问题讨论】:

  • 这能回答你的问题吗? What does double bars (||) mean in SQL?
  • 它是用于字符串连接的 SQL 标准运算符。它应该忽略 NULL 值——但也许并非所有数据库都这样做。
  • @DM 是的。
  • 大家对这个愚蠢的问题感到抱歉:)

标签: sql


【解决方案1】:

|| 是字符串连接运算符。不能将 null 连接到字符串。

如果你有一张桌子tbl...

id col1 col2
1 a1 a2
(null) b1 b2

...你问...

select col1
, 'pilot' || cast(id as string) AS id
from tbl

...你会得到...

col1 id
a1 pilot1
b1

...因为...

'pilot' || null

...返回null。

(您应该指定您正在使用的 RDBMS。)这在 Oracle 中可能不是真的,因为它将 NULL 和 '' 视为等效。但似乎id 很可能是一个int 字段,因此您可能会因为cast 而得到相同的结果。

【讨论】:

    猜你喜欢
    • 2011-06-09
    • 1970-01-01
    • 2023-03-28
    • 2014-12-05
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多