跳转到内容

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()
  1. Oracle 连接结果不会被 NULL "吞噬" (与 ANSI SQL 不同)。Oracle 文档警告这种行为将来可能会发生变化,并建议显式地合并 NULL
  2. MS SQL concat() 结果不会被 NULL "吞噬" (与 ANSI SQL 不同)。+ 结果不会被 "吞噬" SET CONCAT_NULL_YIELDS_NULL OFF;
  3. INITCAP 从 DB2 V9.7 开始受支持。
  4. Soundex 函数默认情况下从 SQLite 中省略。只有在 SQLite 使用 -DSQLITE_SOUNDEX=1 编译时选项构建时才可用。
  5. MySQL 使用原始 Soundex 算法。
  6. 使用 Donald E. Knuth 在《计算机程序设计艺术》第 3 卷:排序和查找中定义的增强 Soundex 算法。
华夏公益教科书