iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0
AI & Data

作者超囉嗦,但一天只要十分鐘的MYSQL真.新手教學系列 第 24

第二十四日-MYSQL常用字串函數:取字串長度、取部分字串

  • 分享至 

  • xImage
  •  

繼介紹時間函數後,要介紹的是MYSQL常用字串函數。
字串函數可以幫助我們抓取欄位的前幾個字、後幾個字,
或是抓到特定關鍵字、關鍵字附近的字等等,
今天先介紹怎麼取字串長度和簡單的取字串。

取字串長度

對字串進行操作,第一個要認識的是「字串字數」,
因為有些相關函數會指定:關鍵字後面「幾個字」,
一般在計算字數時,「ABC」是三個字,三位元,
但中文就不一定了,「你好」是兩個字,
根據編碼不同,可能是兩位元(GBK)或是三位元(UTF-8)。

  • 字串位元數 LENGTH()

以下語法輸出結果中文是6位元,
可以推出我的資料庫中文編碼設定是UTF-8,
一個字三位元;英文則是5位元,一個字一位元。

SELECT LENGTH('你好');
SELECT CHAR_LENGTH('Hello');
  • 字串字數 CHAR_LENGTH()

以下語法輸出結果中文長度2,英文長度5,
無論中英文,一個字就是長度1。

SELECT CHAR_LENGTH('你好');
SELECT CHAR_LENGTH('Hello');

取字串

  • LEFT(字串,長度)

取字串從左邊起數來的長度

SELECT LEFT('今天天氣晴,太陽出來了,風兒輕輕吹',6);
今天天氣晴,
  • RIGHT(字串,長度)

取字串從右邊起數來的長度

SELECT RIGHT('今天天氣晴,太陽出來了,風兒輕輕吹',6);
,風兒輕輕吹
  • SUBSTRING(字串,從哪裡開始擷取,擷取長度)

SUBSTRING可以指定從哪個位置開始擷取,要擷取多長。
(會包含開始位置的字串,例如從第7個字開始,取3個,
就會是7,8,9)

SELECT SUBSTRING('今天天氣晴,太陽出來了,風兒輕輕吹',7,5);
太陽出來了

如果不給擷取長度,就會一路擷取到結束。

SELECT SUBSTRING('今天天氣晴,太陽出來了,風兒輕輕吹',7);
太陽出來了,風兒輕輕吹

也可以用負數指定擷取位置
負數意思就是從字串尾巴數回來。

SELECT SUBSTRING('今天天氣晴,太陽出來了,風兒輕輕吹',-5,5);
風兒輕輕吹

上一篇
第二十三日-MYSQL常用時間函數:加加減減各種日期選取
下一篇
第二十五日-MYSQL常用字串函數:用分隔符取字串、字串合併
系列文
作者超囉嗦,但一天只要十分鐘的MYSQL真.新手教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
jason20200911
iT邦新手 5 級 ‧ 2020-12-23 18:17:02

大大您好

想修正一個地方SELECT CHAR_LENGTH('你好')的長度應該是2

另外謝謝您提供這麼棒的教學

Cinna iT邦新手 4 級 ‧ 2021-11-07 04:07:22 檢舉

已修正,感謝你

我要留言

立即登入留言