我试图绕过从表中提取所有数据,并使用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, '%');