Php SQL从id以逗号分隔的列中获取id
我有一个名为Php SQL从id以逗号分隔的列中获取id,php,sql,mariadb,Php,Sql,Mariadb,我有一个名为id的列,其中有一组由逗号分隔的id,如下所示: asdaxxdfd2、wwfsfdssdfsd6、SDFDDSED223445RR55 我需要将列中的id与现有的$user\u id 尝试这个并没有成功: “从id类似“%”的my_表中选择id”$用户id。"%'"; 不知道我还能做什么 多谢各位 "SELECT id FROM my_table WHERE concat(',', id, ',') LIKE '%," . $user_id . ",%';" 我应该这样做 但我也
id
的列,其中有一组由逗号分隔的id,如下所示:
asdaxxdfd2、wwfsfdssdfsd6、SDFDDSED223445RR55
我需要将列中的id与现有的$user\u id
尝试这个并没有成功:
“从id类似“%”的my_表中选择id”$用户id。"%'";代码>
不知道我还能做什么
多谢各位
"SELECT id FROM my_table WHERE concat(',', id, ',') LIKE '%," . $user_id . ",%';"
我应该这样做
但我也强烈建议对模式进行规范化。您的问题有点含糊不清,我不知道这个解决方案是否符合您的意图:
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%'
这将返回匹配的用户id,但再次使用存储在一行中的值的数据库从来都不是一个好主意。SELECT*FROM tbl其中id REGEXP“[[::]]”;
SELECT * FROM tbl WHERE id REGEXP "[[:<:]]$user_id[[:>:]]";
这些匹配“单词边界”,从而处理字符串的开头和结尾
但是,如果不进行规范化,就无法生成比完整表扫描更快的查询。是时候对数据进行规范化了。你是说,如果不进行规范化,就不可能做到这一点吗?你使用什么DBMS?可能与否,任何人都不应该像这样存储数据,规范化是最好的解决方案here@stickybit玛丽亚数据库
SELECT * FROM tbl WHERE id REGEXP "[[:<:]]$user_id[[:>:]]";