【发布时间】:2012-01-31 00:23:25
【问题描述】:
是否可以在一个查询中将多个 SQL LIKE 通配符串在一起 - 像这样?
LIKE '% aaaa %' AND LIKE '% bbbb %'
目的是查找包含两个通配符但没有特定顺序的记录。
【问题讨论】:
-
"SQL 喜欢和喜欢"?烦人的问题标题。不是吗?
是否可以在一个查询中将多个 SQL LIKE 通配符串在一起 - 像这样?
LIKE '% aaaa %' AND LIKE '% bbbb %'
目的是查找包含两个通配符但没有特定顺序的记录。
【问题讨论】:
正确的 SQL 语法是:
field LIKE '% aaaa %' AND field LIKE '% bbbb %'
【讨论】:
是的,可以,但是语法是:
Field LIKE '%aaa%' AND field LIKE '%bbb%'
【讨论】:
当您将此语句与变量一起使用时,这很有用。
SELECT *
FROM `tableName`
WHERE `colName` LIKE CONCAT('%', 'aaaa', '%') AND -- if aaaa is direct Text
`colName` LIKE CONCAT('%', 'bbbb', '%')
SELECT *
FROM `tableName`
WHERE `colName` LIKE CONCAT('%', aaaa, '%') AND -- if aaaa is variable
`colName` LIKE CONCAT('%', bbbb, '%')
【讨论】:
是的,但请记住,LIKE 是类似于其他语言中的== 或> 的运算符。您仍然需要指定等式的另一边:
SELECT * FROM myTable
WHERE myField LIKE '%aaaa%' AND myField LIKE '%bbbb%'
【讨论】:
可以将任意数量的条件串在一起。但是,谨慎的做法是使用括号对子句进行分组以消除歧义:
SELECT *
FROM tableName
WHERE (columnOne LIKE '%pattern%')
AND (columnTwo LIKE '%other%')
【讨论】: