MySQL中常見的字符串函數(shù)應(yīng)用詳解
在前面若干章節(jié)中,我們介紹了SQL的基礎(chǔ)與高階語法,接下來,我們將分四個(gè)章節(jié),介紹MySQL中常見的函數(shù)應(yīng)用,大致分為如下幾個(gè)章節(jié):
- MySQL 字符串函數(shù)
- MySQL 數(shù)字函數(shù)
- MySQL 日期函數(shù)
- MySQL 高級(jí)函數(shù)
本文將主要介紹MySQL 字符串函數(shù)。
演示數(shù)據(jù)
我們通過創(chuàng)建 Student_Information表,并向該表中插入以下數(shù)據(jù)。
建表SQL語句如下:

插入SQL語句如下:

表數(shù)據(jù)如下:

ASCII(s) 函數(shù)
返回字符串 s 的第一個(gè)字符的 ASCII 碼,示例如下:

如上,返回 sname 字段第一個(gè)字母的 ASCII 碼。
CHAR_LENGTH(s) 函數(shù)
返回字符串 s 的字符數(shù)量,示例如下:

如上,返回 sname 字段的字符數(shù)量。
CONCAT(s1, s2, ...sn) 函數(shù)
將字符串 s1,s2...,sn 連接為一個(gè)字符串,示例如下:

如上,我們將 sname, phone 字段合并為一個(gè)字符串。
CONCAT_WS(sep, s1,s2...sn) 函數(shù)
將 s1,s2...,sn 連接成字符串,并以sep字符作為分隔符,示例如下:

如上,我們將 sname, phone 字段合并為一個(gè)字符串。并使用 '-' 作為分隔符。
FIELD(s,s1,s2...) 函數(shù)
返回第一個(gè)字符串 s 在字符串列表 (s1,s2...) 中的位置,示例如下:

如上,我們返回字符串 Deja 在列表值 'Devin', 'Anna','Deja' 中的位置為 3 。
FIND_IN_SET(s1,s2) 函數(shù)
解析逗號(hào)分隔的 s2 列表,返回在字符串 s2 中與 s1 匹配的字符串的位置,示例如下:

如上,返回字符串 Devin 在指定字符串 Devin,19825011315 中的位置為 1 。
LOCATE(s1, s)函數(shù)
返回 s1 在字符串 s 的第一個(gè)出現(xiàn)的位置,示例如下:

如上,獲取 tiao 在字符串 toutiao 中的第一次出現(xiàn)的位置為 4。
FORMAT(n,d)函數(shù)
將數(shù)字 n 進(jìn)行格式化, 如 "#,###,###.##"。 將 n 四舍五入并保留到小數(shù)點(diǎn)后 d 位,示例如下:

如上,我們將 17758521.1314 格式化為 17,758,521.13 。
INSERT(s1, x, len, s2) 函數(shù)
字符串 s2 替換 s1 的第 x 位置開始,長(zhǎng)度為 len 的字符串,示例如下:

如上,我們從字符串 toutiao.com 第1個(gè)位置開始的 7 個(gè)字符替換為 testops。
LEFT(s, n) 函數(shù)
返回字符串 s 的前 n 個(gè)字符,示例如下:

如上,返回 phone 字段的前 3 個(gè)字符。
RIGHT(s, n) 函數(shù)
返回字符串 s 的后 n 個(gè)字符,示例如下:

如上,返回 phone 字段的后 4 個(gè)字符。
MID(s, n, len) 函數(shù)
從字符串 s 的第 n 位置截取長(zhǎng)度為 len 的子字符串,示例如下:

如上,從 phone 字段的第 7 個(gè)位置開始截取長(zhǎng)度為 4 個(gè)字符的字符串。
LOWER(s) 函數(shù)
將字符串 s 的所有字母變成小寫字母,示例如下:

如上,字符串 sname 字段轉(zhuǎn)換為純小寫。
UPPER(s) 函數(shù)
將字符串 s 轉(zhuǎn)換為大寫,示例如下:

如上,將 sname 字段轉(zhuǎn)換為大寫。
LPAD(s1, len, s2) 函數(shù)
在字符串 s1 的最左邊開始填充字符串 s2,并使字符串長(zhǎng)度達(dá)到 len,示例如下:

如上,將字符串 '-' 填充到 sname 字段的最左邊,并使字段長(zhǎng)度滿足 6 個(gè)字符:
RPAD(s1, len, s2) 函數(shù)
在字符串 s1 的結(jié)尾處添加字符串 s2,使字符串的長(zhǎng)度達(dá)到 len,示例如下:

如上,將字符串 '-' 填充到 sname 字段的最右邊,并使字段長(zhǎng)度滿足 6 個(gè)字符:
LTRIM(s) 函數(shù)
去掉字符串 s 左邊的空格,示例如下:

如上,去掉字符串 ' toutiao.com' 左邊的空格。
RTRIM(s) 函數(shù)
去掉字符串 s 右邊的空格,示例如下:

如上,去掉字符串 'toutiao.com ' 的右邊的空格。
TRIM(s) 函數(shù)
去掉字符串 s 左右兩邊的空格,示例如下:

如上,去掉字符串 ' toutiao.com ' 的左右的空格:
REPEAT(s, n) 函數(shù)
將字符串 s 重復(fù) n 次,示例如下:

如上,將字符串 'testops' 重復(fù) 2 次。
REPLACE(s, s1, s2) 函數(shù)
使用字符串 s2 替代字符串 s 中的字符串 s1,示例如下:

如上,將字符串 toutiao.com 中的字符 toutiao 替換為字符 testops。
REVERSE(s) 函數(shù)
將字符串 s 的順序反過來,示例如下:

如上,將字符串 toutiao.com 的順序反過來。
STRCMP(s1, s2) 函數(shù)
比較字符串 s1 和 s2,若 s1 與 s2 相等返回 0 ,若 s1 > s2 返回 1,若 s1

如上 ,比如 "testops" 與 "testops",因相等則返回 0。