Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 左连接上的Concat正则表达式_Mysql_Sql - Fatal编程技术网

Mysql 左连接上的Concat正则表达式

Mysql 左连接上的Concat正则表达式,mysql,sql,Mysql,Sql,我需要从一个表中获取数据,其中行值是逗号分隔的字符串,如:5,10,16,25,7我还使用了左连接,因此我需要这样的内容: // ... SELECT ... s.`other_thing` LEFT JOIN `something` s ON w.`whatever` = REGEXP CONCAT('(,|^)', s.`id`, '(,|$)') // ... 我需要得到这样的东西:(,| ^)5(,|$)onon 编辑:我用一个简单的解决了这个问题,比如CONCAT(“%”,s.

我需要从一个表中获取数据,其中行值是逗号分隔的字符串,如:
5,10,16,25,7
我还使用了
左连接
,因此我需要这样的内容:

// ...

SELECT ... s.`other_thing`

LEFT JOIN `something` s
ON w.`whatever` = REGEXP CONCAT('(,|^)', s.`id`, '(,|$)')

// ...
我需要得到这样的东西:
(,| ^)5(,|$)
on
on

编辑:我用一个简单的
解决了这个问题,比如CONCAT(“%”,s.id“%”)


编辑2:如果您想压缩正则表达式,可以使用:
REGEXP-concat('(^ |,)(',s.id')(,|$))

我强烈反对使用此数据模型。你的下一个问题很可能是关于性能的——实际上没有希望了。您应该为列表提供一个连接/关联表,而不是将多个值存储在一个字符串中

有时候,我们会被其他人非常非常糟糕的设计决策所困扰。如果是这种情况,MySQL有一个帮助功能:

SELECT ... s.`other_thing`
FROM x LEFT JOIN
     something s
     ON find_in_set(s.id, x.really_bad_list_format) > -

我强烈反对这种数据模型。你的下一个问题很可能是关于性能的——实际上没有希望了。您应该为列表提供一个连接/关联表,而不是将多个值存储在一个字符串中

有时候,我们会被其他人非常非常糟糕的设计决策所困扰。如果是这种情况,MySQL有一个帮助功能:

SELECT ... s.`other_thing`
FROM x LEFT JOIN
     something s
     ON find_in_set(s.id, x.really_bad_list_format) > -

是的,这不是我用过的最好的数据模型。。。我现在使用的是
比如CONCAT(“%”,s.id“%”)
,谢谢你的回答!是的,这不是我用过的最好的数据模型。。。我现在使用的是
比如CONCAT(“%”,s.id“%”)
,谢谢你的回答!