MySQL喜欢逆转

时间:2011-11-16 22:23:34

标签: mysql database

我正试图绕过从表中提取所有数据,然后使用php循环遍历它。这是我目前的查询:

SELECT
*
FROM
ExampleTable
WHERE
StringContains LIKE "%lkjlkjsomeuser@example.comjkjhkjhkjhkjhk,mniu,mk,mkjh%"

ExampleTable.StringContains的值看起来像'someuser@example.com','someuser2 @example.com'等。

这不匹配,因为LIKE只查找列值的子字符串,而不是相反。有关命令的任何想法,以查找表值是传递的字符串的子字符串的行吗?

3 个答案:

答案 0 :(得分:3)

SELECT
*
FROM
ExampleTable
WHERE
'lkjlkjsomeuser@example.comjkjhkjhkjhkjhk,mniu,mk,mkjh' LIKE
  CONCAT('%', StringContains, '%')

答案 1 :(得分:3)

试试这个:

SELECT *
FROM   ExampleTable
WHERE  "lkjlkjsomeuser@example.comjkjhkjhkjhkjhk,mniu,mk,mkjh" LIKE
       CONCAT("%",StringContains,"%")

关键是要认识到列变量只表示一个字符串,LIKE语句总是比较表单中的两个字符串

"stringA" LIKE '%stringB%'

通常人们使用它来搜索“整个”数据库字段字符串中包含的字符串的“部分”,但您可以轻松地切换它们。您需要的唯一额外工具是CONCAT语句,因为您希望数据库字段是部分而不是整体。 CONCAT语句在数据库字段字符串周围构建一个带有%'s的字符串,参数的字符串形式现在等同于

"stringB" LIKE "%stringA%"

答案 2 :(得分:2)

只需按相反的顺序制作LIKE即可。由于您必须首先添加% SELECT * FROM ExampleTable WHERE "lkjlkjsomeuser@example.comjkjhkjhkjhkjhk,mniu,mk,mkjh" LIKE CONCAT('%', StringContains, '%'); 字段,所以必须concatenate字段:

{{1}}