为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL可以拆分列吗?

MySQL可以拆分列吗?

至尊宝的传说 2019-06-18 15:29:52
MySQL可以拆分列吗?我有一列有逗号分隔的数据:1,2,33,2,14,5,65,5,5我正在尝试运行一个搜索,它将分别查询CSV字符串的每个值。0<first<5   and  1<second<3  and  2<third<4我知道,我可以返回所有的查询,并将其分割,然后自己进行比较。我很好奇是否有办法这样做,所以MySQL做处理工作。谢谢!
查看完整描述

4 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

使用

substring_index(`column`,',',1) ==> first value
substring_index(substring_index(`column`,',',-2),',',1)=> second value
substring_index(substring_index(`column`,',',-1),',',1)=> third value

在你的WHERE条款中。

SELECT * FROM `table`WHERE substring_index(`column`,',',1)<0 ANDsubstring_index(`column`,',',1)>5


查看完整回答
反对 回复 2019-06-18
?
holdtom

TA贡献1805条经验 获得超10个赞

它似乎奏效了:

substring_index ( substring_index ( context,',',1 ), ',', -1) ) substring_index ( substring_index ( context,',',2 ), ',', -1) )
 substring_index ( substring_index ( context,',',3 ), ',', -1) ) substring_index ( substring_index ( context,',',4 ), ',', -1) )

意思是第一值、第二、第三等。

说明:

内在substring_index返回以逗号分隔的前n个值。所以如果你原来的字符串是“34,7,23,89”,substring_index( context,',', 3)返回“34,7,23”。
substring_index获取内部返回的值。substring_index-1允许您获取最后一个值。所以你从“34,7,23”中得到“23”。
而不是-1如果您指定-2,您将得到“7,23”,因为它使用了最后两个值。

例子:

select * from MyTable where substring_index(substring_index(prices,',',1),',',-1)=3382;

这里,prices中的列的名称。MyTable.


查看完整回答
反对 回复 2019-06-18
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以通过使用MySQLREGEXP或类似工具获得所需的东西。

MySQL模式匹配文档


查看完整回答
反对 回复 2019-06-18
  • 4 回答
  • 0 关注
  • 927 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信