各种数据库拥有各种标准和非标准的字符串函数和操作符,但它们通常在边缘情况下解释得不够充分。本页面展示了这些操作的兼容性。
函数
concat
功能 |
代码 |
PostgreSQL 9.1 |
MySQL |
Oracle |
DB2 |
非文本参数 |
concat('a', 123) |
a123 |
a123 |
a123 |
a123 |
NULL 参数 |
concat('a', NULL) |
a |
NULL |
a |
a |
3+ 个参数 |
concat('a', 'b', 'c') |
abc |
abc |
(不支持) |
(不支持) |
concat_ws
'ws' 代表 'with separator'(带分隔符)。
功能 |
代码 |
PostgreSQL 9.1 |
MySQL |
非文本参数 |
concat_ws(',', 'a', 123) |
a,123 |
a,123 |
NULL 参数 |
concat_ws(',', 'a', NULL) |
a |
a |
3+ 个参数 |
concat_ws(',', 'a', 'b', 'c') |
a,b,c |
a,b,c |
NULL 分隔符 |
concat_ws(NULL, 'a', 'b') |
NULL |
NULL |
left
功能 |
代码 |
PostgreSQL 9.1 |
MySQL |
SQL Server |
DB2 |
正长度 |
left('abcde', 2) |
ab |
ab |
ab |
ab |
零长度 |
left('abcde', 0) |
(空) |
(空) |
(空) |
(空) |
负长度 |
left('abcde', -2) |
abc |
(空) |
错误 |
错误 |
- PostgreSQL 中的负长度:left(str, -len) = left(str, length(str) - len)
right
功能 |
代码 |
PostgreSQL 9.1 |
MySQL |
SQL Server |
DB2 |
正长度 |
right('abcde', 2) |
de |
de |
de |
de |
零长度 |
right('abcde', 0) |
(空) |
(空) |
(空) |
(空) |
负长度 |
right('abcde', -2) |
cde |
(空) |
错误 |
错误 |
- PostgreSQL 中的负长度:right(str, -len) = right(str, length(str) - len)
reverse
功能 |
代码 |
PostgreSQL 9.1 |
MySQL |
SQL Server |
多字节安全? |
reverse('...') |
是 |
是 |
是 |
操作符
||
功能 |
代码 |
PostgreSQL |
Oracle |
DB2 |
SQL Server (+) |
非文本参数 |
'a' || 123 |
a123 |
a123 |
a123 |
错误 |
NULL 参数 |
'a' || NULL |
NULL |
a |
NULL |
NULL |
- MySQL 不支持使用 || 操作符连接字符串。请改用 concat()。(在 MySQL 中 || 代表 OR。)
- SQL Server 不支持使用 || 操作符连接字符串。请改用 +。,