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 演算法。