我在 MS SQL Server 工作,我从未使用过 PLSQL ,但我最近收到了一位同事的代码(见下文):
substr(Field1, 1, 8)||'*'||SUBSTR(Field1, 10, 1)
我可以照顾substr
- > substring
有点容易,但我对||'*'||
的含义/做法感到迷茫;它是连接,还是我还没有想到的其他东西?
答案 0 :(得分:1)
Oracle中的||
运算符(以及@a_horse_with_no_name注释 - 标准ANSI)SQL确实是字符串之间的连接运算符。在MS SQL Server的SQL中,您只需使用+
。所以翻译将是:
SUBSTRING(Field1, 1, 8) + '*' + SUBSTRING(Field1, 10, 1)
答案 1 :(得分:1)
就像@MarcB说它是串联的,|| {string here} ||
相当于SQL Server中的+
或concat()
:
substring(Field1, 1, 8)+ '*' + substring(Field1, 10, 1)
答案 2 :(得分:0)
连接两个字符串的结果是另一个字符 串。如果两个字符串都是数据类型CHAR,则结果为 数据类型CHAR,限制为2000个字符。如果是任一字符串 数据类型为VARCHAR2,结果具有数据类型VARCHAR2并且是有限的 到4000个字符。如果任一参数是CLOB,则结果为a 临时CLOB。字符串中的尾随空格由保留 连接,无论字符串或CLOB的数据类型如何。
在大多数平台上,连接运算符是两个实心垂直 条形图,如表4-3所示。但是,一些IBM平台使用了破解 此运算符的垂直条。在两者之间移动SQL脚本文件时 具有不同字符集的系统,例如ASCII和 EBCDIC,垂直条可能无法转换为垂直条 目标Oracle数据库环境所需的。 Oracle提供 CONCAT字符函数作为垂直条的替代 对于难以或无法控制的情况的操作员 由操作系统或网络实用程序执行的转换。使用 此功能在将在环境之间移动的应用程序中 具有不同的字符集。
虽然Oracle将零长度字符串视为空值, 将零长度字符串与另一个操作数连接起来 总是导致另一个操作数,所以null只能来自 两个空字符串的串联。但是,这可能不会继续下去 在Oracle数据库的未来版本中都是如此。连接一个 表达式可能为null,使用NVL函数显式 将表达式转换为零长度字符串。
要获得更清晰的源代码,您可以考虑使用CONCAT
这是帖子about perfomance