MySQL 字符串函數(shù)

函數(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)

返回 substrstr 中第一次出現(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ù)的作用如下:返回 substrstr 中第一次出現(xiàn)的位置(即索引)。第二種格式函數(shù)則返回自 str 指定位置 pos (即索引)起, substrstr 中第一次出現(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,以此類推。str1str2……中的 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

exprpattern 進(jìn)行模式匹配。如果相匹配則返回1,否則返回0。如果 exprpattern 兩個(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è)空字符串。如果 strcount 為 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è)字符串 str1str2,如果兩字符串相等,返回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)  
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,577評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,486評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,600評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,944評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,108評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,652評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,385評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,616評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,798評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評(píng)論 1 295
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,334評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,570評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容

  • CONCAT() 將多個(gè)字符串連接成一個(gè)字符串,如有任何一個(gè)參數(shù)為NULL,則返回值為NULL注意如果自變量中含有...
    若兮緣閱讀 2,344評(píng)論 0 10
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,800評(píng)論 0 10
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,872評(píng)論 0 38
  • 前兩天和女朋友到家里來一塊吃了個(gè)晚飯,裝修了半拉的房子怎么看都有些邋遢,自己一個(gè)人住了好久的地方,一直感覺能住就行...
    王七蛋閱讀 312評(píng)論 0 1
  • 曾幾何時(shí)不婚主義開始盛行,而且數(shù)量呈上升趨勢(shì),原因是多方面的,有的是因?yàn)橐恢睕]有遇到合適的伴侶;有的是個(gè)性相對(duì)獨(dú)立...
    一丁羊閱讀 8,185評(píng)論 2 9