![]() |
1
13
你说得对。除非你正在进行通配符匹配,否则使用LIKE没有任何好处。此外,在没有通配符的情况下使用它可能会导致使用低效的查询计划。 |
![]() |
2
8
桑尼几乎做对了:) 在SQL2005的默认安装中,在QA中运行以下命令
因此,LIKE在尾随空格上不匹配,在查询计划端,两者的性能几乎相同,但“=”连接的性能要好一点。 使用LIKE时必须记住的另一件事是正确转义字符串。
一般来说,人们不会使用LIKE进行精确匹配,因为逃逸问题会导致各种并发症和微妙的错误,人们会忘记逃逸,这是一个痛苦的世界。 但是。..如果你想要一个真正有效的精确匹配,LIKE可以解决这个问题。 比如说,你想将用户名与“sam”匹配,而不想得到“sam”或“山姆”,不幸的是,该列的排序规则不区分大小写。 以下内容(添加了转义符)是可行的方法。
进行双重匹配的原因是为了避免表扫描。 然而。... 我认为 varbinary casting trick 不易出错,更容易记住。 |
![]() |
3
3
如果不使用通配符,那么不同的是,“=”进行精确匹配,但LIKE将匹配带有尾随空格的字符串(来自SSBO):
|
![]() |
4
2
随着
LIKE
您可以匹配该字段的关键字
|
![]() |
5
2
如果你在其他人的代码中看到了这一点,也许他们打算允许一个人传递一个包含模式或通配符的字符串。 |
![]() |
6
1
是的,你说得对,它应该只用于通配符匹配。它应该谨慎使用,特别是在非索引字段上的非常大的表上,因为它会大大减慢查询速度。 |
![]() |
7
1
我也遇到了同样的问题。使用以下命令运行类似的查询大约需要一分半钟
|
![]() |
8
0
LIKE用于通配符匹配,其中as=(equals)用于精确匹配。 我还认为它用于由FULL TEXT CATALOGUES编目的字段,用于硬核字符串比较。 |
![]() |
9
-1
是的,据我所知,使用like而不使用任何通配符与使用=运算符是一样的。您确定输入参数中没有通配符吗? |