是否可以在不使用“LIKE”的情况下从 mysql 数据库中检索与部分字符串匹配的数据? 例如我有一个值为“22,56,79,45,69”的列 我只想检索列值内数字“45”的行而不使用“LIKE”条件?
像这样的事情:
SELECT * FROM Table_Name WHERE 45 is part of value in Column_Name
是否可以或者我必须使用“LIKE”?
最佳答案
如果您无法更改架构,LIKE
运算符将是最简单的方法。
SELECT * FROM Table_Name WHERE
Column_Name LIKE '45,%' -- Starts with 45
OR Column_Name LIKE '%,45,%' -- 45 in the middle somewhere
OR Column_Name LIKE '%,45' -- Ends with 45
OR Column_Name = '45'; -- 45 is the only item in the list
您也许还可以将其简化为:
SELECT * FROM Table_Name WHERE concat(',',Column_Name,',') LIKE '%,45,%';
如果您的表很大并且性能是一个问题,我会推荐反对这种方法。 MySql 将无法为此利用索引。相反,我建议标准化您的数据。将每个值放在不同表中的单独行中,然后在该表上JOIN
。这会快得多。
要回答您的实际问题,即这对于您当前的架构是否可行且不使用LIKE
,您可以查看Regexp operator 。但是,我真的不认为这与使用 LIKE
有什么不同。它仍然需要解析表中的每个字符串。
关于mysql - SQL 选择在列中找到匹配值的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24435003/