我正试图绕过从表中提取所有数据,然后使用php循环遍历它。这是我目前的查询:
SELECT
*
FROM
ExampleTable
WHERE
StringContains LIKE "%lkjlkjsomeuser@example.comjkjhkjhkjhkjhk,mniu,mk,mkjh%"
ExampleTable.StringContains的值看起来像'someuser@example.com','someuser2 @example.com'等。
这不匹配,因为LIKE只查找列值的子字符串,而不是相反。有关命令的任何想法,以查找表值是传递的字符串的子字符串的行吗?
答案 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}}