Oracle SQL 中的字符串连接运算符是什么?
有没有我应该注意的“有趣”功能?
(这似乎很明显,但我找不到以前的问题问它)。
它是 ||
,例如:
select 'Mr ' || ename from emp;
我能想到的唯一“有趣”的功能是 'x' || null
返回 'x'
,而不是您可能期望的 null
。
还有concat,不过用的不多
select concat('a','b') from dual;
CONCAT
还与其他 DBMS(至少 MySQL 和 Postgres)兼容。
nvl()
的 Oracle 天才。)
CONCAT
也是 available in Microsoft SQL Server 2012 and onwards。 CONCAT 虽然是非标准的,但如果您希望您的代码具有可移植性,绝对是您的必经之路。 (||
是实际的 ANSI 标准运算符,尽管通过查看对它的支持您不会知道它!)
我建议在处理 2 个字符串时使用 concat 和 ||当这些字符串超过 2 时:
select concat(a,b)
from dual
或者
select 'a'||'b'||'c'||'d'
from dual
concat(a,b)
而不是 a||b
?
DECLARE
a VARCHAR2(30);
b VARCHAR2(30);
c VARCHAR2(30);
BEGIN
a := ' Abc ';
b := ' def ';
c := a || b;
DBMS_OUTPUT.PUT_LINE(c);
END;
输出:: Abc def
连接两个以上的字符串时,使用 CONCAT(CONCAT(,),)
对我有用。
我的问题需要使用日期字符串(仅)并从 YYYY-MM-DD
创建 YYYYMMDD
,如下所示(即不转换为日期格式):
CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD
有两种方法可以在 Oracle SQL
中连接字符串。使用 CONCAT
函数或 ||
运算符。
CONCAT
函数允许您将两个字符串连接在一起
SELECT CONCAT( string1, string2 ) FROM dual;
由于 CONCAT
函数仅允许您将两个值连接在一起。如果您想连接两个以上的值,您可以est 多个 CONCAT 函数 调用。
SELECT CONCAT(CONCAT('A', 'B'),'C') FROM dual;
使用 CONCAT
函数的替代方法是使用 || 运算符
SELECT 'My Name' || 'My Age' FROM dual;
不定期副业成功案例分享
||
不是逻辑运算符,因此,'x'||null
返回x
。AND
、NOT
等运算符,那么||
当然不是逻辑运算符。但是,'x'||null
返回x
有什么意义呢?n+null
返回 null,那么+
是逻辑运算符吗?