函數(shù)名稱 | 函數(shù)功能說明 |
---|---|
ASCII() |
返回字符串 str 中最左邊字符的 ASCII 代碼值 |
BIN() |
返回十進(jìn)制數(shù)值 N 的二進(jìn)制數(shù)值的字符串表現(xiàn)形式 |
BIT_LENGTH() |
返回字符串 str 所占的位長(zhǎng)度 |
CHAR() |
返回每一個(gè)傳入的整數(shù)所對(duì)應(yīng)的字符 |
CHAR_LENGTH() |
單純返回 str 的字符串長(zhǎng)度 |
CHARACTER_LENGTH() |
作用等同于CHAR_LENGTH()
|
CONCAT_WS() |
返回串聯(lián)并以某種分隔符進(jìn)行分隔的字符串 |
CONCAT() |
返回串聯(lián)的字符串 |
CONV() |
轉(zhuǎn)換數(shù)值的進(jìn)制 |
ELT() |
返回一定索引處的字符串 |
EXPORT_SET() |
返回一個(gè)字符串,其中,對(duì)于每個(gè)設(shè)置在bits 中的位,得到一個(gè)on 字符串,而對(duì)于每個(gè)未設(shè)定的位,則得到一個(gè)off 字符串。 |
FIELD() |
返回第一個(gè)參數(shù)在隨后參數(shù)中的索引(下文中有時(shí)也稱其為位置) |
FIND_IN_SET() |
返回第一個(gè)參數(shù)在第二個(gè)參數(shù)中的索引 |
FORMAT() |
將數(shù)值參數(shù)進(jìn)行一些格式化,并保留指定的小數(shù)位數(shù) |
HEX() |
返回參數(shù)的16進(jìn)制數(shù)的字符串形式 |
INSERT() |
在字符串的指定位置處,將指定數(shù)目的字符串替換為新字符串 |
INSTR() |
返回子字符串第一次出現(xiàn)的索引 |
LCASE() |
等同于 LOWER()
|
LEFT() |
按指定規(guī)則,返回字符串中最左方的一定數(shù)目的字符 |
LENGTH() |
返回字符串的字節(jié)長(zhǎng)度 |
LOAD_FILE() |
加載指定名稱的文件 |
LOCATE() |
返回子字符串第一次出現(xiàn)的位置 |
LOWER() |
返回小寫的參數(shù) |
LPAD() |
返回字符串參數(shù),其左側(cè)由指定字符串補(bǔ)齊指定數(shù)目 |
LTRIM() |
去除前導(dǎo)空格 |
MAKE_SET() |
返回一個(gè)由逗號(hào)分隔的字符串集,其中每個(gè)字符串都擁有bits 集中相對(duì)應(yīng)的二進(jìn)制位 |
MID() |
從指定位置返回子字符串 |
OCT() |
將參數(shù)轉(zhuǎn)變成八進(jìn)制數(shù),返回這個(gè)八進(jìn)制數(shù)的字符串形式 |
OCTET_LENGTH() |
等同于 LENGTH()
|
ORD() |
如果參數(shù)中最左方的字符是個(gè)多字節(jié)字符,則返回該字符的ASCII代碼值 |
POSITION() |
等同于 LOCATE()
|
QUOTE() |
對(duì)參數(shù)進(jìn)行轉(zhuǎn)義,以便用于 SQL 語(yǔ)句 |
REGEXP |
使用正則表達(dá)式進(jìn)行模式匹配 |
REPEAT() |
按指定次數(shù)重復(fù)字符串 |
REPLACE() |
查找更換指定的字符串 |
REVERSE() |
反轉(zhuǎn)字符串參數(shù)中的字符 |
RIGHT() |
返回字符串參數(shù)最右邊指定位數(shù)的字符 |
RPAD() |
將字符串按指定次數(shù)重復(fù)累加起來 |
RTRIM() |
除去字符串參數(shù)的拖尾空格 |
SOUNDEX() |
返回一個(gè)soundex字符串 |
SOUNDS LIKE |
對(duì)比聲音 |
SPACE() |
返回指定空格數(shù)目的字符串 |
STRCMP() |
對(duì)比兩個(gè)字符串 |
SUBSTRING_INDEX() |
將字符串參數(shù)中在指定序號(hào)的分隔符之前的子字符串予以返回 |
SUBSTRING() 與 SUBSTR() |
按指定規(guī)則返回子字符串 |
TRIM() |
清除字符串參數(shù)的前導(dǎo)及拖尾空格 |
UCASE() |
等同于 UPPER()
|
UNHEX() |
將16進(jìn)制數(shù)的每一位都轉(zhuǎn)變?yōu)锳SCII字符 |
UPPER() |
將參數(shù)全轉(zhuǎn)變?yōu)榇髮?/td> |
ASCII(str)
返回字符串 str
中最左邊字符的 ASCII 代碼值。如果該字符串為空字符串,則返回0。如果字符串為 NULL 則返回 NULL。因?yàn)锳SCII碼表能表示的字符為256個(gè),所以ASCII()
返回值在0-255之間。 示例如下:
mysql> SELECT ASCII('2');
+---------------------------------------------------------+
| ASCII('2') |
+---------------------------------------------------------+
| 50 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT ASCII('dx');
+---------------------------------------------------------+
| ASCII('dx') |
+---------------------------------------------------------+
| 100 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
BIN(N)
返回十進(jìn)制數(shù)值 N
的二進(jìn)制數(shù)值的字符串表現(xiàn)形式。其中,N
是一 BIGINT 型數(shù)值。該函數(shù)等同于 CONV(N, 10, 2)
。如果 N
為 NULL,則返回 NULL。示例如下:
mysql> SELECT BIN(12);
+---------------------------------------------------------+
| BIN(12) |
+---------------------------------------------------------+
| 1100 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
BIT_LENGTH(str)
返回字符串 str
所占的位長(zhǎng)度。示例如下:
mysql> SELECT BIT_LENGTH('text');
+---------------------------------------------------------+
| BIT_LENGTH('text') |
+---------------------------------------------------------+
| 32 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CHAR(N,... [USING charset_name])
會(huì)將每一個(gè)參數(shù) N
都解釋為整數(shù),返回由這些整數(shù)在 ASCII 碼中所對(duì)應(yīng)字符所組成的字符串。忽略 NULL 值。示例如下:
mysql> SELECT CHAR(77,121,83,81,'76');
+---------------------------------------------------------+
| CHAR(77,121,83,81,'76') |
+---------------------------------------------------------+
| MySQL |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CHAR_LENGTH(str)
單純返回 str
的字符串長(zhǎng)度(字符串中到底有幾個(gè)字符)。多字節(jié)字符會(huì)被當(dāng)成單字符對(duì)待,所以如果一個(gè)字符串包含5個(gè)雙字節(jié)字符,LENGTH()
返回10,而 CHAR_LENGTH()
會(huì)返回5。示例如下:
mysql> SELECT CHAR_LENGTH("text");
+---------------------------------------------------------+
| CHAR_LENGTH("text") |
+---------------------------------------------------------+
| 4 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CHARACTER_LENGTH(str)
與函數(shù) CHAR_LENGTH()
作用相同。
CONCAT(str1,str2,...)
將一眾字符串參數(shù)加以連接,返回結(jié)果字符串。可能有1或多個(gè)參數(shù)。如果參數(shù)中都是非二進(jìn)制字符串,結(jié)果也是非二進(jìn)制字符串。如果參數(shù)包含任何二進(jìn)制字符串,結(jié)果也是二進(jìn)制字符串。數(shù)值型參數(shù)會(huì)被轉(zhuǎn)化成相應(yīng)的二進(jìn)制字符串形式。如果想避免這樣,可以使用顯式的類型轉(zhuǎn)換,如下例所示:
mysql> SELECT CONCAT('My', 'S', 'QL');
+---------------------------------------------------------+
| CONCAT('My', 'S', 'QL') |
+---------------------------------------------------------+
| MySQL |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CONCAT_WS(separator,str1,str2,...)
一種特殊的 CONCAT
函數(shù)。利用分隔符 separator
參數(shù)來連接后續(xù)的參數(shù) str1
、str2
……分隔符添加在后續(xù)參數(shù)之間,與后續(xù)參數(shù)一樣,它也可以是一個(gè)字符串。如果該分隔符參數(shù)為 NULL,則結(jié)果也是 NULL。示例如下:
mysql> SELECT CONCAT_WS(',','First name','Last Name' );
+---------------------------------------------------------+
| CONCAT_WS(',','First name','Last Name' ) |
+---------------------------------------------------------+
| First name, Last Name |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CONV(N,from_base,to_base)
將數(shù)值在不同進(jìn)制間轉(zhuǎn)換。將數(shù)值型參數(shù) N
由初始進(jìn)制 from_base
轉(zhuǎn)換為目標(biāo)進(jìn)制 to_base
的形式并返回。如果任何參數(shù)為 NULL,則返回 NULL。N
可以是整數(shù),但也可以是字符串。進(jìn)制取值范圍為2-36。如果 to_base
為負(fù)值,N
被認(rèn)為是有符號(hào)數(shù)值;反之,N
被認(rèn)為是無符號(hào)數(shù)值。函數(shù)運(yùn)算精度為64位。示例如下:
mysql> SELECT CONV('a',16,2);
+---------------------------------------------------------+
| CONV('a',16,2) |
+---------------------------------------------------------+
| 1010 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ELT(N,str1,str2,str3,...)
如果 N
= 1,則返回 str1
,如果N
= 2 則返回 str2
,以此類推。如果 N
小于1或大于參數(shù)個(gè)數(shù),則返回 NULL。ELT()
是 FIELD()
的功能補(bǔ)充函數(shù)。示例如下:
mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');
+---------------------------------------------------------+
| ELT(1, 'ej', 'Heja', 'hej', 'foo') |
+---------------------------------------------------------+
| ej |
+---------------------------------------------------------+
1 row in set (0.00 sec)
EXPORT_SET(bits,on,off[,separator[,number_of_bits]])
對(duì)于 bits
中的每一位,都能得到一個(gè)on
字符串,對(duì)于未在bits
中的每個(gè)比特,則得到off
字符串。bits
中的比特從右向左(從低位到高位比特)排列,而字符串則是按照從左至右的順序添加到結(jié)果上,并由 separator
字符串分隔(默認(rèn)采用逗號(hào) ,
)。bits
中的位數(shù)由 number_of_bits
提供,如果不指定,則默認(rèn)為64。如果大于64,則會(huì)自動(dòng)截取為64,它是一個(gè)無符號(hào)整形值,因此上-1也和64具有一樣的效果。
mysql> SELECT EXPORT_SET(5,'Y','N',',',4);
+---------------------------------------------------------+
| EXPORT_SET(5,'Y','N',',',4) |
+---------------------------------------------------------+
| Y,N,Y,N |
+---------------------------------------------------------+
1 row in set (0.00 sec)
FIELD(str,str1,str2,str3,...)
返回 str
在后面的參數(shù)列(str1
、str2
、str3
……)中的索引(起始索引為1)。如果未在參數(shù)列中發(fā)現(xiàn) str
則返回0。
mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
+---------------------------------------------------------+
| FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
FIND_IN_SET(str,strlist)
如果字符串 str
在由 N
個(gè)子字符串組成的字符串列表 strlist
中,則返回其在 strlist
中的索引(字符串列表 strlist
的初始索引為1)。示例如下:
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
+---------------------------------------------------------+
| SELECT FIND_IN_SET('b','a,b,c,d') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
FORMAT(X,D)
將數(shù)值參數(shù) X
以'#,###,###.##' 的形式進(jìn)行格式化,并四舍五入到小數(shù)點(diǎn)后 D
位處,然后將格式化結(jié)果以字符串形式返回。如果 D
為0,則結(jié)果沒有小數(shù)部分。示例如下:
mysql> SELECT FORMAT(12332.123456, 4);
+---------------------------------------------------------+
| FORMAT(12332.123456, 4) |
+---------------------------------------------------------+
| 12,332.1235 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
HEX(N_or_S)
當(dāng) N_or_S
為數(shù)值時(shí),以16進(jìn)制數(shù)的字符串形式返回 N
的值,N
為 BIGINT 型值。該函數(shù)作用等同于 CONV(N, 10, 16)
。
當(dāng) N_or_S
為字符串時(shí),返回 N_or_S
的16進(jìn)制字符串形式,N_or_S
中的每個(gè)字符都被轉(zhuǎn)換為2個(gè)16進(jìn)制數(shù)字。示例如下:
mysql> SELECT HEX(255);
+---------------------------------------------------------+
| HEX(255) |
+---------------------------------------------------------+
| FF |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT 0x616263;
+---------------------------------------------------------+
| 0x616263 |
+---------------------------------------------------------+
| abc |
+---------------------------------------------------------+
1 row in set (0.00 sec)
INSERT(str,pos,len,newstr)
在原始字符串 str
中,將自左數(shù)第 pos
位開始,長(zhǎng)度為 len
個(gè)字符的字符串替換為新字符串 newstr
,然后返回經(jīng)過替換后的字符串。如果 pos
未在原始字符串長(zhǎng)度內(nèi),則返回原始字符串。如果 len
不在原始字符串長(zhǎng)度內(nèi),則返回原始字符串中自 pos
位起后面剩余的字符串。如果函數(shù)中任一參數(shù)為 NULL,則返回 NULL。示例如下:
mysql> SELECT INSERT('Quadratic', 3, 4, 'What');
+---------------------------------------------------------+
| INSERT('Quadratic', 3, 4, 'What') |
+---------------------------------------------------------+
| QuWhattic |
+---------------------------------------------------------+
1 row in set (0.00 sec)
INSTR(str,substr)
返回 substr
在 str
中第一次出現(xiàn)時(shí)的位置(也就是索引)。作用類似于雙參數(shù)版本的 LOCATE()
函數(shù),只不過參數(shù)的次序調(diào)換了過來。示例如下:
mysql> SELECT INSTR('foobarbar', 'bar');
+---------------------------------------------------------+
| INSTR('foobarbar', 'bar') |
+---------------------------------------------------------+
| 4 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LCASE(str)
等同于 LOWER()
。
LEFT(str,len)
返回字符串 str
自左數(shù)的 len
個(gè)字符。如果任一參數(shù)為 NULL,則返回 NULL。示例如下:
mysql> SELECT LEFT('foobarbar', 5);
+---------------------------------------------------------+
| LEFT('foobarbar', 5) |
+---------------------------------------------------------+
| fooba |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LENGTH(str)
返回字符串 str
的字節(jié)長(zhǎng)度。多字節(jié)字符被如實(shí)計(jì)算為多字節(jié)。所以,對(duì)于包含5個(gè)雙字節(jié)字符(如中文字符)的字符串,LENGTH()
返回10,而 CHAR_LENGTH()
返回5。示例如下:
mysql> SELECT LENGTH('text');
+---------------------------------------------------------+
| LENGTH('text') |
+---------------------------------------------------------+
| 4 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LOAD_FILE(file_name)
讀取文件并以字符串形式返回文件內(nèi)容。使用該函數(shù)時(shí),文件必須位于服務(wù)器主機(jī)中,且必須制定該文件的完整路徑名。必須擁有 FILE 權(quán)限。文件對(duì)于所有人都必須是可讀狀態(tài),而且文件尺寸也必須小于 max_allowed_packet
字節(jié)。
如果因?yàn)槲礉M足上述幾個(gè)條件,從而文件不存在于服務(wù)器主機(jī)中,或者不可讀,則函數(shù)返回 NULL。
自 MySQL 5.0.19 起,character_set_filesystem
系統(tǒng)變量負(fù)責(zé)對(duì)字符串形式文件名加以解讀。 示例如下:
mysql> UPDATE table_test
-> SET blob_col=LOAD_FILE('/tmp/picture')
-> WHERE id=1;
...........................................................
LOCATE(substr,str), LOCATE(substr,str,pos)
第一種格式函數(shù)的作用如下:返回 substr
在 str
中第一次出現(xiàn)的位置(即索引)。第二種格式函數(shù)則返回自 str
指定位置 pos
(即索引)起, substr
在 str
中第一次出現(xiàn)的位置。如果在 str
中未找到 substr
,則兩種函數(shù)都返回0。示例如下:
mysql> SELECT LOCATE('bar', 'foobarbar');
+---------------------------------------------------------+
| LOCATE('bar', 'foobarbar') |
+---------------------------------------------------------+
| 4 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LOWER(str)
根據(jù)當(dāng)前所采用的字符集映射關(guān)系,將 str
所有字符都轉(zhuǎn)為小寫,并返回新字符串。示例如下:
mysql> SELECT LOWER('QUADRATICALLY');
+---------------------------------------------------------+
| LOWER('QUADRATICALLY') |
+---------------------------------------------------------+
| quadratically |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LPAD(str,len,padstr)
左補(bǔ)齊函數(shù)。將字符串 str
左側(cè)利用字符串 padstr
補(bǔ)齊為整體長(zhǎng)度為 len
的字符串。如果 str
大于 len
,則返回值會(huì)縮減到 len
個(gè)字符。示例如下:
mysql> SELECT LPAD('hi',4,'??');
+---------------------------------------------------------+
| LPAD('hi',4,'??') |
+---------------------------------------------------------+
| ??hi |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LTRIM(str)
將字符串 str
中前部的空格字符去除,然后返回新的 str
字符串。示例如下:
mysql> SELECT LTRIM(' barbar');
+---------------------------------------------------------+
| LTRIM(' barbar') |
+---------------------------------------------------------+
| barbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MAKE_SET(bits,str1,str2,...)
返回一個(gè)集合值(是一個(gè)由字符 ,
所分隔的眾多子字符串所組合而成的字符串),該集合中包含的字符串的比特?cái)?shù)等于bits
集合中的對(duì)應(yīng)比特?cái)?shù)。例如,str1
對(duì)應(yīng)著 bit 0
,str2
對(duì)應(yīng) bit 1
,以此類推。str1
、str2
……中的 NULL 值將不會(huì)添加到結(jié)果中。示例如下:
mysql> SELECT MAKE_SET(1,'a','b','c');
+---------------------------------------------------------+
| MAKE_SET(1,'a','b','c') |
+---------------------------------------------------------+
| a |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MID(str,pos,len)
MID(str,pos,len)
作用等同于 SUBSTRING(str,pos,len)
。
OCT(N)
以字符串形式返回 N
的八進(jìn)制數(shù),N
是一個(gè)BIGINT 型數(shù)值。作用相當(dāng)于CONV(N,10,8)
。如果 N
為 NULL,則返回 NULL。示例如下:
mysql> SELECT OCT(12);
+---------------------------------------------------------+
| OCT(12) |
+---------------------------------------------------------+
| 14 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
OCTET_LENGTH(str)
OCTET_LENGTH()
作用等同于 LENGTH()
。
ORD(str)
如果 str
最左邊的字符是一個(gè)多字節(jié)字符,利用以下公式計(jì)算返回該字符的 ASCII 代碼值。
(第一個(gè)字節(jié)的 ASCII 代碼)
(第1個(gè)字節(jié)的 ASCII 代碼 × 256)
(第3個(gè)字節(jié)的 ASCII 代碼 × 2562)……
如果最左邊的字符不是多字節(jié)字符,則函數(shù)按照 ASCII()
方式返回值。示例如下:
mysql> SELECT ORD('2');
+---------------------------------------------------------+
| ORD('2') |
+---------------------------------------------------------+
| 50 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
POSITION(substr IN str)
作用等同于 LOCATE(substr,str)
。
QUOTE(str)
產(chǎn)生一個(gè)在SQL語(yǔ)句中可用作正確轉(zhuǎn)義數(shù)據(jù)值的結(jié)果。將 str
中的每一個(gè)單引號(hào)('
)、反轉(zhuǎn)杠(\
)、 ASCII的NUL值,以及Control+Z
組合前加上反斜杠,最后再補(bǔ)足左右閉合用的單引號(hào)。如果參數(shù)為 NULL,則返回 NULL 的字符串形式(不用單引號(hào)閉合),示例如下:
mysql> SELECT QUOTE('Don\'t!');
+---------------------------------------------------------+
| QUOTE('Don\'t!') |
+---------------------------------------------------------+
| 'Don\'t!' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
注意:檢查一下,如果安裝的 MySQL 不支持這個(gè)函數(shù),則不要使用。
expr REGEXP pattern
將 expr
與 pattern
進(jìn)行模式匹配。如果相匹配則返回1,否則返回0。如果 expr
與 pattern
兩個(gè)參數(shù)中有一個(gè)為 NULL,則結(jié)果也為 NULL。除了在處理二進(jìn)制字符串時(shí),REGEXP 對(duì)大小寫并不敏感。第1個(gè)示例如下:
mysql> SELECT 'ABCDEF' REGEXP 'A%C%%';
+---------------------------------------------------------+
| 'ABCDEF' REGEXP 'A%C%%' |
+---------------------------------------------------------+
| 0 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
第2個(gè)實(shí)例:
mysql> SELECT 'ABCDE' REGEXP '.*';
+---------------------------------------------------------+
| 'ABCDE' REGEXP '.*' |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
第3個(gè)示例:
mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
+---------------------------------------------------------+
| 'new*\n*line' REGEXP 'new\\*.\\*line' |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
REPEAT(str,count)
將字符串 str
重復(fù) count
次,返回結(jié)果字符串。如果 count
小于1,則返回一個(gè)空字符串。如果 str
或 count
為 NULL,則返回 NULL。示例如下:
mysql> SELECT REPEAT('MySQL', 3);
+---------------------------------------------------------+
| REPEAT('MySQL', 3) |
+---------------------------------------------------------+
| MySQLMySQLMySQL |
+---------------------------------------------------------+
1 row in set (0.00 sec)
REPLACE(str,from_str,to_str)
查找字符串 str
中出現(xiàn)的 from_str
,將其都更換為 to_str
。在查找 from_str
時(shí),函數(shù)對(duì)大小寫是敏感的。示例如下:
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
+---------------------------------------------------------+
| REPLACE('www.mysql.com', 'w', 'Ww') |
+---------------------------------------------------------+
| WwWwWw.mysql.com |
+---------------------------------------------------------+
1 row in set (0.00 sec)
REVERSE(str)
以反向順序返回 str
所有字符。示例如下:
mysql> SELECT REVERSE('abcd');
+---------------------------------------------------------+
| REVERSE('abcd') |
+---------------------------------------------------------+
| dcba |
+---------------------------------------------------------+
1 row in set (0.00 sec)
RIGHT(str,len)
返回 str
右邊末 len
位的字符。如果有的參數(shù)是 NULL 值,則返回 NULL。
mysql> SELECT RIGHT('foobarbar', 4);
+---------------------------------------------------------+
| RIGHT('foobarbar', 4) |
+---------------------------------------------------------+
| rbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
RPAD(str,len,padstr)
在 str
右方補(bǔ)齊 len
位的字符串 padstr
,返回新字符串。如果 str
長(zhǎng)度大于 len
,則返回值的長(zhǎng)度將縮減到 len
所指定的長(zhǎng)度。示例如下:
mysql> SELECT RPAD('hi',5,'?');
+---------------------------------------------------------+
| RPAD('hi',5,'?') |
+---------------------------------------------------------+
| hi??? |
+---------------------------------------------------------+
1 row in set (0.00 sec)
RTRIM(str)
去除 str
的拖尾空格,返回新字符串。示例如下:
mysql> SELECT RTRIM('barbar ');
+---------------------------------------------------------+
| RTRIM('barbar ') |
+---------------------------------------------------------+
| barbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SOUNDEX(str)
一種能夠生成判斷字符串是否同音的soundex
字符串的函數(shù)。返回 str
的 soundex 字符串。聽起來相似的兩個(gè)字符串應(yīng)該具有相同的soundex 字符串。標(biāo)準(zhǔn)的soundex 字符串包含4個(gè)字符,但 MySQL 的 SOUNDEX()
函數(shù)返回的是任意長(zhǎng)度的字符串。可以在結(jié)果上使用 SUBSTRING()
來獲取標(biāo)準(zhǔn)的 soundex 字符串。str
中的非字母字符自動(dòng)會(huì)被忽略。所有在 A-Z 范圍之外的國(guó)際字母字符會(huì)被認(rèn)為是元音字母。示例如下:
mysql> SELECT SOUNDEX('Hello');
+---------------------------------------------------------+
| SOUNDEX('Hello') |
+---------------------------------------------------------+
| H400 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
expr1 SOUNDS LIKE expr2
作用等同于 SOUNDEX(expr1) = SOUNDEX(expr2)
。
SPACE(N)
返回包含 N
個(gè)空格的字符串。示例如下:
mysql> SELECT SPACE(6);
+---------------------------------------------------------+
| SELECT SPACE(6) |
+---------------------------------------------------------+
| ' ' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
STRCMP(str1, str2)
對(duì)比兩個(gè)字符串 str1
和 str2
,如果兩字符串相等,返回1;如果當(dāng)前的排序規(guī)則,str1
小于 str2
,則返回-1,反之則都返回1。第1個(gè)示例如下:
mysql> SELECT STRCMP('MOHD', 'MOHD');
+---------------------------------------------------------+
| STRCMP('MOHD', 'MOHD') |
+---------------------------------------------------------+
| 0 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
第2個(gè)示例如下:
mysql> SELECT STRCMP('AMOHD', 'MOHD');
+---------------------------------------------------------+
| STRCMP('AMOHD', 'MOHD') |
+---------------------------------------------------------+
| -1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
第3個(gè)示例如下:
mysql> SELECT STRCMP('MOHD', 'AMOHD');
+---------------------------------------------------------+
| STRCMP('MOHD', 'AMOHD') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBSTRING(str,pos)、SUBSTRING(str FROM pos)、SUBSTRING(str,pos,len)、SUBSTRING(str FROM pos FOR len)
在以上4種函數(shù)變種形式中,沒有 len
參數(shù)的函數(shù)形式會(huì)返回自 str
中位置 pos
處之后的子字符串;有 len
參數(shù)的函數(shù)形式會(huì)返回自 str
中位置 pos
處之后,長(zhǎng)度為 len
的子字符串。使用 FROM
的函數(shù)形式則是采用的標(biāo)準(zhǔn)的 SQL 語(yǔ)法。pos
參數(shù)也可能取負(fù)值,在這種情況下,取字符串的方式是從字符串 str
的末尾向前(而非從前往后),從這種逆向順序的 pos
處開始取字符串。另外,負(fù)值的 pos
參數(shù)可用于任何形式的 SUBSTRING()
函數(shù)中。示例如下:
mysql> SELECT SUBSTRING('Quadratically',5);
+---------------------------------------------------------+
| SSUBSTRING('Quadratically',5) |
+---------------------------------------------------------+
| ratically |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
+---------------------------------------------------------+
| SUBSTRING('foobarbar' FROM 4) |
+---------------------------------------------------------+
| barbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('Quadratically',5,6);
+---------------------------------------------------------+
| SUBSTRING('Quadratically',5,6) |
+---------------------------------------------------------+
| ratica |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBSTRING_INDEX(str,delim,count)
返回 str
中第 count
次出現(xiàn)的分隔符 delim
之前的子字符串。如果 count
為正數(shù),將最后一個(gè)分隔符左邊(因?yàn)槭菑淖髷?shù)分隔符)的所有內(nèi)容作為子字符串返回;如果 count
為負(fù)值,返回最后一個(gè)分隔符右邊(因?yàn)槭菑挠覕?shù)分隔符)的所有內(nèi)容作為子字符串返回。在尋找分隔符時(shí),函數(shù)對(duì)大小寫是敏感的。示例如下:
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
+---------------------------------------------------------+
| SUBSTRING_INDEX('www.mysql.com', '.', 2) |
+---------------------------------------------------------+
| www.mysql |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) 與 TRIM([remstr FROM] str)
將字符串 str
去除 remstr
所指定的前綴或后綴,返回結(jié)果字符串。如果沒有指定標(biāo)識(shí)符BOTH
、LEADING
,或TRAILING
,則默認(rèn)采用 BOTH
,即將前后綴都刪除。remstr
其實(shí)是個(gè)可選參數(shù),如果沒有指定它,則刪除的是空格。示例如下:
mysql> SELECT TRIM(' bar ');
+---------------------------------------------------------+
| TRIM(' bar ') |
+---------------------------------------------------------+
| bar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
+---------------------------------------------------------+
| TRIM(LEADING 'x' FROM 'xxxbarxxx') |
+---------------------------------------------------------+
| barxxx |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
+---------------------------------------------------------+
| TRIM(BOTH 'x' FROM 'xxxbarxxx') |
+---------------------------------------------------------+
| bar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
+---------------------------------------------------------+
| TRIM(TRAILING 'xyz' FROM 'barxxyz') |
+---------------------------------------------------------+
| barx |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UCASE(str)
作用等同于 UPPER()
。
UNHEX(str)
它是HEX(str)
的逆向函數(shù)。將參數(shù)中的每一對(duì)16進(jìn)制數(shù)字都轉(zhuǎn)換為10進(jìn)制數(shù)字,然后再轉(zhuǎn)換成 ASCII 碼所對(duì)應(yīng)的字符。結(jié)果返回的字符是二進(jìn)制字符串。
mysql> SELECT UNHEX('4D7953514C');
+---------------------------------------------------------+
| UNHEX('4D7953514C') |
+---------------------------------------------------------+
| MySQL |
+---------------------------------------------------------+
1 row in set (0.00 sec)
參數(shù) X
中的字符必須是合法的16進(jìn)制數(shù)字:0-9,A-F或者a-f(因?yàn)?6進(jìn)制不區(qū)分字母的大小寫)。如果參數(shù) X
中包含非16進(jìn)制數(shù)字,則函數(shù)返回 NULL。
UPPER(str)
根據(jù)當(dāng)前所采用的字符集映射關(guān)系,將 str
所有字符都轉(zhuǎn)為大寫,并返回新字符串。示例如下:
mysql> SELECT UPPER('Allah-hus-samad');
+---------------------------------------------------------+
| UPPER('Allah-hus-samad') |
+---------------------------------------------------------+
| ALLAH-HUS-SAMAD |
+---------------------------------------------------------+
1 row in set (0.00 sec)