MySQL就像倒过来的



我试图绕过从表中提取所有数据,并使用php循环使用它。这是我当前的查询:

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

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

不匹配,因为LIKE只查找列值的子字符串,而不是其他方式。对命令找到行表值是传递字符串的子字符串的任何想法?

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

试试这个:

SELECT *
FROM   ExampleTable
WHERE  "lkjlkjsomeuser@example.comjkjhkjhkjhkjhk,mniu,mk,mkjh" LIKE
       CONCAT("%",StringContains,"%")
关键是要认识到列变量只是表示一个字符串,而LIKE语句总是比较 形式的两个字符串。

"stringA" LIKE '%stringB%'

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

"stringB" LIKE "%stringA%"

LIKE按相反的顺序排列。因为你必须添加那些%,你必须先concatenate字段:

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

最新更新