MySQL 查询字符串包含相反的内容


MySQL query String contains opposite

MySQL 查询字符串包含

您好,我正在尝试进行 mysql 查询,该查询查找包含我设置的主字符串中的字符串的列值。因此,如果我的主字符串是"1234567",我希望它返回任何具有"1"、"2"等列值的结果......上面的链接与我能找到的一样接近,但我需要它在相反的方向上进行比较。

例如:

WHERE '%{$needle}%' LIKE `column`

您对各种值的存储位置有点模糊(您的文本使用"master string"等术语,但示例代码使用不同的名称)。

您可以使用 regexp 做您想做的事。 下面是一个示例:

select 'abcd6efg' regexp concat('.*[', '1234567', '].*')

老实说,regex在一个重要方面与like不同。 如果左字符串的任何部分匹配,则返回 regex,而对于like,整个字符串必须匹配。 因此,以下内容也有效:

select 'abcd6efg' regexp concat('[', '1234567', ']')

我喜欢放入显式通配符以避免在两者之间切换时出错。

您可以在此处查找正则表达式的文档。

怎么样

WHERE ? LIKE CONCAT('%', `column`, '%')

其中?占位符具有带有值 (1234567) 的绑定参数,因为您使用的是 PDO 或 MySQLi 扩展,对吗?

当然,您肯定不会使用已弃用的MySQL扩展。