アーカイブ : 2012年02月

mysqlで列のデータをデリミタで分割する

telephone : 0123-123-456

というデータを

tel1: 0123 tel2: 123 tel3: 456

と苦労して分割するsql

mysqlではsplit関数みたいなのが見つからなかったのでlocate,substr,lengthを使って取り出して見ました。

select
telephone,
SUBSTRING(telephone, 1, LOCATE(’-',telephone)-1) tel1,
SUBSTRING(SUBSTRING(telephone, LOCATE(’-',telephone)+1), 1, LOCATE(’-',SUBSTRING(telephone, LOCATE(’-',telephone)+1))-1) tel2,
SUBSTRING(telephone,
LENGTH(SUBSTRING(telephone, 1, LOCATE(’-',telephone)-1))+
LENGTH(SUBSTRING(SUBSTRING(telephone, LOCATE(’-',telephone)+1), 1, LOCATE(’-',SUBSTRING(telephone, LOCATE(’-',telephone)+1))-1))+3) tel3

from members

実行結果

telephone tel1 tel2 tel3
0123-123-456 0123 123 456