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[[:>:]]";