有什么区别
SELECT foo FROM bar WHERE foobar='$foo'
Run Code Online (Sandbox Code Playgroud)
和
SELECT foo FROM bar WHERE foobar LIKE'$foo'
Run Code Online (Sandbox Code Playgroud)
lav*_*nio 29
=在SQL中完全匹配.
LIKE进行通配符匹配,使用'%'作为多字符匹配符号,使用'_'作为单字符匹配符号.'\'是默认的转义字符.
foobar = '$foo'并且foobar LIKE '$foo'行为相同,因为两个字符串都不包含通配符.
foobar LIKE '%foo' 将匹配以'foo'结尾的任何内容.
LIKE还有一个ESCAPE子句,因此您可以设置转义字符.这将允许您在字符串中匹配文字'%'或'_'.你也可以NOT LIKE.
MySQL站点有关于LIKE运算符的文档.语法是
expression [NOT] LIKE pattern [ESCAPE 'escape']
Run Code Online (Sandbox Code Playgroud)
Jes*_*ert 19
LIKE可以进行通配符匹配:
SELECT foo FROM bar WHERE foobar LIKE "Foo%"
Run Code Online (Sandbox Code Playgroud)
如果您不需要模式匹配,则使用=而不是LIKE.它更快,更安全.(您正在使用参数化查询,对吧?)
请记住MySQL将根据情况进行转换:LIKE将执行字符串转换,而=将执行int转换.考虑到以下情况:
(int) (vchar2)
id field1 field2
1 1 1
2 1 1,2
Run Code Online (Sandbox Code Playgroud)
SELECT*FROM as a LE
testJOINtestas a b on a.field1 LIKE b.field2
会产生
id field1 field2 id field1 field2
1 1 1 1 1 1
2 1 1,2 1 1 1
Run Code Online (Sandbox Code Playgroud)
而
SELECT*FROM as a LE
testJOINtestas a b on a.field1 = b.field2
会产生
id field1 field2 id field1 field2
1 1 1 1 1 1
1 1 1 2 1 1,2
2 1 1,2 1 1 1
2 1 1,2 2 1 1,2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18404 次 |
| 最近记录: |