gpt4 book ai didi

oracle - 这是什么 Oracle 语法 : "||' '"?

转载 作者:行者123 更新时间:2023-12-01 08:36:54 25 4
gpt4 key购买 nike

我在我们的一个旧应用程序中遇到了一些看起来很奇怪的 Oracle 语法,我很感兴趣...

查询

(名称已更改以保护无辜者)

SELECT COUNT(1) AS WEEKLYCOUNT 
FROM MONKEYS MD
WHERE
MD.MID||'' IN
(
SELECT DISTINCT MD.MID
FROM MONKEYS MD, GIRAFFES GD
WHERE
(MD.MID = GD.MID(+)||'')
AND CURRENT_STATUS = 'Healthy'
AND GIRAFFE_TYPE = 'Long-necked'
AND INTERESTING_DATE BETWEEN
'22 December 2011' AND '29 December 2011'
)
HAVING COUNT(MD.MID) > 0

我不确定的是 ||'' 语法。到目前为止,我只见过 || 在 Oracle 中用于连接。而且这里似乎没有意义......

任何关于它在做什么、为什么这样做以及这个语法​​是如何工作的想法都会很棒。

更多信息

有趣的是,这个 SQL 在 SQLPlus 中返回以下内容:

no rows selected

Elapsed: 00:00:00.03
SQL>

我重新编写了相同的 SQL(减去奇怪的语法),利用我对系统的了解产生了我相当确定的相同结果:

SELECT COUNT(1) AS WEEKLYCOUNT 
FROM
MONKEYS MD
LEFT JOIN GIRAFFES GD ON GD.MID = MD.MID
WHERE
AND MD.CURRENT_STATUS = 'Healthy'
AND GD.GIRAFFE_TYPE = 'Long-necked'
AND GD.INTERESTING_DATE BETWEEN
'22 December 2011' AND '29 December 2011'

但是,第二个查询会产生(预期的)以下内容:

WEEKLYCOUNT
-----------
0

Elapsed: 00:00:00.16
SQL>

主要区别在于,即使两个查询都在寻找 COUNT,第一个查询也不返回任何行...很奇怪,是吗?

(PS 获取显示的耗时,我有 SET TIMING ON)

最佳答案

||在 Oracle 中用于连接字符串,因此,如果您有一个非字符串类型的变量并且想要将其转换为字符串,您可以使用 '' 连接它。

关于oracle - 这是什么 Oracle 语法 : "||' '"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8670004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com