在MySQL中,我們經(jīng)常會遇到需要按照逗號拆分字符串的情況,例如我們有一個包含多個標簽的字符串,需要將這些標簽單獨取出來并進行操作。
下面我們來介紹一種簡單的方法,使用MySQL內(nèi)置函數(shù)SUBSTRING_INDEX和FIND_IN_SET來實現(xiàn)字符串按照逗號拆分。
SELECT SUBSTRING_INDEX(tag, ',', 1) as tag1, SUBSTRING_INDEX(SUBSTRING_INDEX(tag, ',', 2), ',', -1) as tag2, SUBSTRING_INDEX(SUBSTRING_INDEX(tag, ',', 3), ',', -1) as tag3 FROM tags;
上面的代碼中,我們使用了SUBSTRING_INDEX函數(shù)將字符串按照逗號分成多個部分,然后再用FIND_IN_SET函數(shù)在每個部分中查找tag。
假設(shè)我們的tags表中有如下數(shù)據(jù):
tag "tag1,tag2,tag3" "tag4,tag5,tag6"
那么上面的查詢將會返回如下結(jié)果:
tag1 tag2 tag3 tag4 tag5 tag6
如果我們需要對每個標簽單獨進行操作,可以結(jié)合使用UNION和JOIN來實現(xiàn)。
SELECT tags.tag, operations.operation FROM tags JOIN ( SELECT 'tag1' as operation UNION SELECT 'tag2' UNION SELECT 'tag3' ) as operations ON FIND_IN_SET(operations.operation, tags.tag) >0;
上面的代碼中,我們先將需要操作的標簽列表用UNION連接起來并進行重命名,然后在查詢時將它們JOIN到tags表中,并使用FIND_IN_SET函數(shù)來過濾符合條件的數(shù)據(jù)。
經(jīng)過上述操作,我們就可以方便地進行字符串按照逗號拆分,并對其中的每個部分進行操作。