字段在mysql表中爆炸

时间:2015-03-08 09:29:52

标签: mysql sql regex

我确实在mytable中有像California | Washington这样的值,其中值由separator |

连接
query:  select state from mytable
result: California|Washington

我希望得到像

一样的每一个值

加利福尼亚

华盛顿

所以我可以加入另一个包含

的表
id  state         population
1   California    489283
2   Washington    923829

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

您不应该以这种方式存储数据。但是,如果由于遗留原因无法更改它,您仍然可以使用LIKES进行查询。

 SELECT *
   FROM joined_table A,
        state_table S
  WHERE S.state LIKE CONCAT('%|', A.state, '|%')
     OR S.state LIKE CONCAT(A.state, '|%')
     OR S.state LIKE CONCAT('%|', A.state)

如果始终存储分隔符所包含的数据,则条件可能更简单:

query:  select state from mytable
result: |California|Washington|

然后你的查询将是:

 SELECT *
   FROM joined_table A,
        state_table S
  WHERE S.state LIKE CONCAT('%|', A.state, '|%')