跳轉到內容

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 演算法。
華夏公益教科書