ORACLE官方SQL语言参考笔记之运算符(第四章-第三节-串联运算符)

串联运算符

串联运算符操作字符串和CLOB数据。表 4-3描述了串联运算符。

表4-3 串联运算符

算子 目的 例子

||

串联字符串和CLOB数据。

SELECT 'Name is ' || last_name
  FROM employees
  ORDER BY last_name;

串联两个字符串的结果是另一个字符串。如果两个字符串都是数据类型CHAR, 则结果具有数据类型CHAR , 并且限制为2000个字符。如果任一字符串都是数据类型VARCHAR2, 则结果具有数据类型VARCHAR2 , 并且限制为4000个字符。如果任一参数是CLOB, 则结果为临时CLOB字符串中的尾随空格由串联保留, 而不考虑 string 的数据类型或CLOB.

在大多数平台上, 串联运算符是两个实心垂直条, 如表 4-3所示。但是, 某些 IBM 平台对此运算符使用了断开的垂直条。当在具有不同字符集的系统之间移动 SQL 脚本文件 (如 ASCII 和 EBCDIC 之间) 时, 垂直条可能不会转换为目标 Oracle 数据库环境所需的垂直条。当无法控制操作系统或网络实用程序执行的转换时, Oracle 提供CONCAT字符函数作为竖线运算符的替代方法。在将在具有不同字符集的环境之间移动的应用程序中使用此函数。

虽然 Oracle 将零长度字符串视为 null, 但将零长度字符串与另一个操作数串联在一起总是会导致另一个操作数, 因此 null 只能从两个 null 字符串的串联中产生。但是, 在 Oracle 数据库的未来版本中可能不会继续这样做。若要串联一个可能为 null 的表达式, 请使用NVL函数显式地将表达式转换为零长度字符串。

另请参见:

  • "字符数据类型" , 了解有关CHARVARCHAR2数据类型之间差异的更多信息

  • 函数CONCATNVL

  • Oracle 数据库 SecureFiles 和大型对象开发人员指南有关CLOBs 的详细信息

串联示例本示例创建一个具有CHARVARCHAR2列的表, 同时插入具有和不带尾随空格的值, 然后选择这些值并串联它们。请注意, 对于CHARVARCHAR2列, 尾随空格将保留。

CREATE TABLE tab1 (col1 VARCHAR2(6), col2 CHAR(6),
                   col3 VARCHAR2(6), col4 CHAR(6));

INSERT INTO tab1 (col1,  col2,     col3,     col4)
          VALUES ('abc', 'def   ', 'ghi   ', 'jkl');

SELECT col1 || col2 || col3 || col4 "Concatenation"
  FROM tab1;

Concatenation
------------------------
abcdef   ghi   jkl

猜你喜欢

转载自blog.csdn.net/huyingzuo/article/details/80475901