我有一个名为id
的列,其中有一堆用逗号分隔的ID,如下所示:
asdaxxdfd2,wwfsfdssdfsd6,sdfdsfdsed2,23445rr55
我需要将列中的ID与现有$user_id
尝试这样做没有:
"SELECT id FROM my_table WHERE id LIKE '%" . $user_id . "%'";
不确定我还能做些什么。
谢谢。
答案 0 :(得分:0)
"SELECT id FROM my_table WHERE concat(',', id, ',') LIKE '%," . $user_id . ",%';"
应该这样做。
但我也强烈建议规范化架构。
答案 1 :(得分:0)
您的问题有点含糊不清,我不知道这个解决方案是否符合您的意图:
SELECT REGEXP_SUBSTR(id, '[^,]+', 1, 1) COLUMN_1,
REGEXP_SUBSTR(id, '[^,]+', 1, 2) COLUMN_2,
FROM my_table;
or just
SELECT id
FROM my_table
WHERE id LIKE '%wwfsfdssdfsd6%'
答案 2 :(得分:0)
SELECT REGEXP_SUBSTR(id," . $user_id . ") UserID FROM my_table;
这将返回匹配的用户ID,但是再次使用存储在单行中的值的数据库永远不是一个好主意。
答案 3 :(得分:0)
SELECT * FROM tbl WHERE id REGEXP "[[:<:]]$user_id[[:>:]]";
匹配&#34;字边界&#34;,从而处理字符串的开头和结尾。
但是,如果没有规范化,就无法使查询运行得比全表扫描更快。