SQL 方言参考/函数和表达式/字符串函数
外观
< SQL 方言参考
函数 | 自 SQL | 标准 | DB2 | SQLite | MonetDB | MySQL | PostgreSQL | Firebird | Virtuoso | Oracle | MSSQL | Linter |
---|---|---|---|---|---|---|---|---|---|---|---|---|
将字符x转换为 ASCII | N/A | N/A | ASCII(x) | UNICODE(x) | ASCII(x) | ASCII(x) | ASCII(x) | ASCII_VAL(x) | ASCII(x) | ASCII(x) | ASCII(x) | N/A |
将 ASCII x 转换为字符 | N/A | N/A | CHR(x) | CHAR(x) | N/A | CHAR(x) | CHR(x) | ASCII_CHAR(x) | CHR(x) | CHR(x) | CHAR(x) | CHR(x) |
字符串连接 | 92 | arg1 || arg2 | arg1 || arg2 arg1 CONCAT arg2 |
arg1 || arg2 | CONCAT (arg1 , arg2) arg1 || arg2 ... || argN |
CONCAT (多个参数) | arg1 || arg2 | arg1 || arg2 | CONCAT(列表) | arg1 || arg2 CONCAT (仅 2 个参数)[1] |
CONCAT(列表) arg1 + arg2[2] |
arg1||arg2 CONCAT(列表) arg1+arg2 |
使用分隔符连接项目 | N/A | N/A | ? | ? | ? | CONCAT_WS(分隔符, 项目 1, 项目 2, ...) | CONCAT_WS(分隔符, 项目 1, 项目 2, ...) | ? | ? | N/A | CONCAT_WS(分隔符, 项目 1, 项目 2, ...) | ? |
查找str中子字符串search的第一个出现位置,从start开始 | 92 | POSITION(search IN str) | LOCATE(search, str[, start]) POSSTR(str, search) |
INSTR(str, search) | POSITION(search IN str) | POSITION(search IN str) INSTR(str, search) LOCATE(search, str[, start]) |
POSITION(search IN str) STRPOS(str, search) |
POSITION(search IN str) | SUBSTR | INSTR(str, search[, start]) | CHARINDEX(search, str[, start]) | POSITION(search IN str) INSTR(str, search, [start [,[n]]) |
查找字符串str中模式search的第一个出现位置 | 2003 | SUBSTRING_REGEX (search IN str) | N/A | N/A | N/A | N/A | INSTR | REGEXP_INSTR(str, search) | PATINDEX(search, str) | N/A | ||
将x转换为小写 | 92 | LOWER(x) | LOWER(x) LCASE(x) |
LOWER(x) | LOWER(x) | LOWER(x) LCASE(x) |
LOWER(x) | LOWER(x) | LCASE(x) | LOWER(x) | LOWER(x) | LOWER(x) |
将x转换为大写 | 92 | UPPER(x) | UPPER(x) UCASE(x) |
UPPER(x) | UPPER(x) | UPPER(x) UCASE(x) |
UPPER(x) | UPPER(x) | UCASE(x) UPPER(x) |
UPPER(x) | UPPER(x) | UPPER(x) |
左填充 | 2003 | N/A | LPAD(str, len [, fill]) | LPAD | LPAD | LPAD | N/A | LPAD | N/A | LPAD | ||
右填充 | 2003 | N/A | RPAD(str, len [, fill]) | RPAD | RPAD | RPAD | N/A | RPAD | N/A | RPAD | ||
从x中删除前导空格 | 92 | TRIM(LEADING [' '] FROM x) | N/A | LTRIM(x) | LTRIM(str [, str]) | LTRIM | LTRIM | TRIM(LEADING [' '] FROM x) | LTRIM | LTRIM | LTRIM | LTRIM |
从x中删除尾随空格 | 92 | TRIM(TRAILING [' '] FROM x) | N/A | RTRIM(x) | RTRIM(str [, str]) | RTRIM | RTRIM | TRIM(TRAILING [' '] FROM x) | RTRIM | RTRIM | RTRIM | RTRIM |
从x中删除前导和尾随空格 | 92 | TRIM(BOTH [' '] FROM x) TRIM(x) |
LTRIM(RTRIM(x)) 或 TRIM(x) |
TRIM(x) | TRIM(str [, str]) | TRIM | TRIM | TRIM(BOTH [' '] FROM x) TRIM(x) |
TRIM | TRIM | LTRIM(RTRIM(x)) | TRIM |
重复str n次 | 2003 | REPEAT(str, n) | N/A | REPEAT | REPEAT | REPEAT | RPAD | REPEAT | RPAD | REPLICATE | REPEAT_STRING(str, n) | |
n个空格的字符串 | 2003 | SPACE(n) | N/A | N/A | SPACE(n) | N/A | RPAD | SPACE(n) | RPAD | SPACE(n) | ||
将数字转换为字符串 | 2003 | CHAR(num) | CAST | CAST | CAST | CAST | TO_CHAR | STR | TO_CHAR | |||
从字符串str中提取子字符串,从start开始,长度为len | 92 | SUBSTRING(str FROM start [FOR len]) | SUBSTR(str, len[, start]) | SUBSTR(str, start [, len]) | SUBSTRING | SUBSTRING SUBSTR |
SUBSTRING(str FROM start [FOR len]) SUBSTR(str, start[, len]) |
SUBSTRING(str FROM start [FOR len]) | SUBSTR | SUBSTR(str,start[,len]) | SUBSTRING(str, start, length) | SUBSTRING(str,start[,len]) SUBSTRING(str FROM start [FOR len]) 与 SUBSTR 相同,而不是 SUBSTRING |
替换字符 | REPLACE(string, from, to) | REPLACE(str, from, to) | REPLACE | REPLACE | REPLACE | REPLACE(str, find, repl) | REPACE | REPLACE | REPLACE | REPLACE | ||
将字符串x中每个单词的第一个字母大写 | N/A | N/A | INITCAP(x)[3] | N/A | N/A | N/A | INITCAP(x) | N/A | INITCAP(x) | INITCAP(x) | N/A | INITCAP(x) |
转换字符串 | TRANSLATE(str, to, from) | N/A | N/A | N/A | TRANSLATE(str, from, to) | N/A | TRANSLATE(str, from, to) | N/A | TRANSLATE | |||
字符串x的长度(以字符为单位) | 92 | CHAR_LENGTH(x) CHARACTER_LENGTH(x) |
LENGTH(x) | LENGTH(x) | LENGTH(x) | CHAR_LENGTH(x) | CHAR_LENGTH(x) CHARACTER_LENGTH(x) |
CHAR_LENGTH(x) CHARACTER_LENGTH(x) |
LENGTH(x) | LENGTH(x) | LEN(x) | LENGTH(x) |
字符串x的长度(以字节为单位) | 92 | OCTET_LENGTH(x) | LENGTH(x) | LENGTH(CAST(x AS BLOB)) | OCTET_LENGTH(x) | LENGTH(x) | OCTET_LENGTH(x) | OCTET_LENGTH(x) | LENGTH(x) | LENGTHB(x) | DATALENGTH(x) | OCTET_LENGTH(x) |
列表中最大的字符串 | 2003 | MAX | GREATEST | MAX | MAX | GREATEST | N/A | GREATEST | ||||
列表中最小的字符串 | 2003 | MIN | LEAST | MIN | MIN | LEAST | N/A | LEAST | ||||
在字符串x中引用 SQL | QUOTE(x) | QUOTE(x) | QUOTE(x) | N/A | QUOTE_LITERAL(x) | q'quote_delimiter x quote_delimiter' | QUOTENAME(x, '''') | |||||
Soundex 字符串x的索引 | SOUNDEX(x) | SOUNDEX(x)[4] | SOUNDEX(x) | SOUNDEX(x)[5] | N/A | N/A | N/A | SOUNDEX(x)[6] | SOUNDEX(x) | N/A | ||
从字符串x计算MD5 哈希值 | N/A | N/A | N/A | MD5(x) | MD5(x) | N/A | N/A | DBMS_CRYPTO.HASH (UTL_RAW.CAST_TO_RAW(X), 2) | HASHBYTES('MD5', x) | N/A | ||
从字符串x计算SHA1 哈希值 | N/A | N/A | N/A | SHA1(x) | N/A | N/A | N/A | DBMS_CRYPTO.HASH (UTL_RAW.CAST_TO_RAW(X), 3) | HASHBYTES('SHA1', x) | N/A | ||
生成UUID | N/A | N/A | N/A | UUID() | GEN_UUID() | SYS_GUID() | NEWID() NEWSEQUENTIALID() |
SYS_GUID() |
- ↑ Oracle 连接结果不会被 NULL "吞噬" (与 ANSI SQL 不同)。Oracle 文档警告这种行为将来可能会发生变化,并建议显式地合并 NULL。
- ↑ MS SQL
concat()
结果不会被 NULL "吞噬" (与 ANSI SQL 不同)。+
结果不会被 "吞噬" 当SET CONCAT_NULL_YIELDS_NULL OFF
时; - ↑ INITCAP 从 DB2 V9.7 开始受支持。
- ↑ Soundex 函数默认情况下从 SQLite 中省略。只有在 SQLite 使用
-DSQLITE_SOUNDEX=1
编译时选项构建时才可用。 - ↑ MySQL 使用原始 Soundex 算法。
- ↑ 使用 Donald E. Knuth 在《计算机程序设计艺术》第 3 卷:排序和查找中定义的增强 Soundex 算法。