在使用MySQL數據庫時,有時需要將一個字段中的多個值使用逗號隔開存儲,例如一個用戶可能有多個愛好,那么可以將其存儲為“籃球,足球,游泳”等形式,但是在查詢時又需要將其分割成單個的值,因此需要使用MySQL內置的函數對其進行分割操作。
--假設有一張名為users的表,其中包含一個名為hobbies的字段,存儲著各個用戶的愛好 SELECT * FROM users; --結果如下: | id | name | hobbies | +-------+--------+---------------+ | 1 | 張三 | 籃球,足球,游泳 | | 2 | 李四 | 閱讀,旅游,美食 | | 3 | 王五 | 聽音樂,看電影,上網 | --現在需要查詢每個用戶的單個愛好,可以使用MySQL內置函數SUBSTRING_INDEX進行分割操作,如下: SELECT id, name, SUBSTRING_INDEX(hobbies, ',', 1) AS hobby1, SUBSTRING_INDEX(SUBSTRING_INDEX(hobbies, ',', 2), ',', -1) AS hobby2, SUBSTRING_INDEX(hobbies, ',', -1) AS hobby3 FROM users; --解釋:SUBSTRING_INDEX(str,delim,count)函數可以將字符串str按照delim進行分割,并返回前count個(若count為正數)或后count個(若count為負數)分割出來的子串; --運行結果如下: | id | name | hobby1 | hobby2 | hobby3 | +-------+--------+-----------+-----------+-----------+ | 1 | 張三 | 籃球 | 足球 | 游泳 | | 2 | 李四 | 閱讀 | 旅游 | 美食 | | 3 | 王五 | 聽音樂 | 看電影 | 上網
以上便是使用MySQL函數進行分割逗號的方法,值得注意的是,如果數據量較大,則會影響到查詢的效率,因此建議在設計表結構時避免使用此種方式存儲多個值,可以考慮建立中間表進行存儲關聯關系。
上一篇vue hover
下一篇c 解析數組型json