gpt4 book ai didi

mysql - SQL 选择在列中找到匹配值的位置

转载 作者:行者123 更新时间:2023-11-29 07:58:45 25 4
gpt4 key购买 nike

是否可以在不使用“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com