SQLServer中妙⽤like提⾼查询效率
查询是SQL Server中主要的功⽤,⽽在查询中将Like⽤上,可以搜索到⼀些意想不到的后果和成效,like的神奇之处在于其提供的模糊查询功⽤,议决与它相婚配的四⼤类通配符,like放在条件中起到画龙点睛的作⽤。
⼀、普通搜索条件中⽤Like
可与LIKE配对的数据类型⾸要是字符串、⽇期或时间值。LIKE 主要字可以运⽤惯例表达式包括上⾯三品种型数据,这些数据字符串中可包括下⾯四种通配符的随意组合。
通配符意思
% 包括零个或更多字符的随意字符串。
_(下划线)任何单个字符。
[ ] 指定范围(⽐如 [a-f])或集合(⽐如 [abcdef])内的任何单个字符。
[^] 不在指定范围(⽐如 [^a - f])或集合(⽐如 [^abcdef])内的任何单个字符。
请将通配符和字符串⽤单引号惹起来,⽐如:
LIKE '赵%' 将搜索姓赵的⼈名或许说以汉字‘赵’ 开头的字符串(如赵刚、赵⼩刚等)。
LIKE '%刚' 将搜索以汉字‘刚’开头的⼀切字符串(如刘刚、李⼩刚等)。
LIKE '%⼩%' 将搜索在任何位置包括汉字‘⼩’的⼀切字符串(如赵⼩刚、李⼩刚、⼭本⼩郎等)。
LIKE '_⼩刚' 将搜索以汉字“⼩刚”开头的⼀切三个汉字的称号(如李⼩刚、赵⼩刚)。
针对英⽂,情形更多,如
LIKE '[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
LIKE '[M-Z]inger' 将搜索以字符串 inger 开头、以从 M 到 Z 的任何单个字母开头的⼀切称号(如 Ringer)。
LIKE 'M[^c]%' 将搜索以字母 M 开头,并且第⼆个字母不是 c 的⼀切称号(如 MacFeather)。
⽐如数据库pubs中有⼀个表author,它的电话号码⼀列即phone这⼀项,那么查⼀切区号为 010 的电话号码命令为:
SELECT phone
FROM pubs.dbo.authors
WHERE phone LIKE '010%'
可以⽤⼀样的通配符运⽤ NOT LIKE。若要在 authors 表中查区号不是 010 的⼀切电话号码,请运⽤下列等价查询中的随意⼀个:
SELECT phone
FROM pubs.dbo.authors
WHERE phone NOT LIKE '010%'
-- 或许
SELECT phone
FROM pubs.dbo.authors
WHERE NOT phone LIKE '010%'
IS NOT NULL ⼦句可与通配符和 LIKE ⼦句结合运⽤。⽐如,下列查询从 authors 表中检索以 010 开头且 IS NOT NULL 的⼀切电话号码:USE pubs
SELECT phone
FROM authors
WHERE phone LIKE '010%' and phone IS NOT NULL
主要包括 LIKE 主要字的语句的输出后果取决于装置流程中所选的排序次第。
可⽤于 text 列的 WHERE 条件只需 LIKE、IS NULL 或 PATINDEX。
不与 LIKE ⼀同运⽤的通配符将解释为常量⽽⾮⽅式,换⾔之,这些通配符仅代表其⾃⾝的值。下列查询试图查到少由四个字符 010% 组成的电话号码。该查询并不会查以 010 开头的电话号码。
SELECT phone
FROM pubs.dbo.authors
WHERE phone = '010%'
运⽤通配符时应着重思索的另⼀个疑问是对功⽤的影响。假设表达式以通配符开头,就⽆法运⽤索引。(就好像给定了姓名"%mith"⽽⾮"Smith"时,将⽆法知晓应从电话簿的哪⼀页开端查。)表达式中间或开头处的通配符不障碍运⽤索引,好像在电话簿中⼀样,假设姓名为"Samuel%",则不论 Samuels 和 Samuelson 能⽆法都在电话簿上,都应知晓该从何处开端查。
⼆、Like特殊情况:搜索通配符字符
上⾯的搜索可以针对普通的汉字或中⽂,那假设遇到上述四种通配符要被搜到时应该如何处理呢?最先需留意的是通配符字符可以搜索,并且有两种⽅法可指定往常⽤作通配符的字符:
运⽤ ESCAPE 主要字定义转义符。在⽅式中,当转义符置于通配符之前时,该通配符就解释为普通字符。⽐如,要搜索在随意位置包括字符串 5% 的字符串,请运⽤:
WHERE ColumnA LIKE '%5/%%' ESCAPE '/'
在上述 LIKE ⼦句中,前导和开头百分号 (%) 解释为通配符,⽽斜杠 (/) 之后的百分号解释为字符%。
在⽅括号 ([ ]) 中只包括通配符⾃⾝。要搜索破折号 (-) ⽽不是⽤它指定搜索范围,请将破折号指定为⽅括号内的第⼀个字符:
WHERE ColumnA LIKE '9[-]5'
下表显⽰了括在⽅括号内的通配符的⽤法。字符串常量的用法
符号意思
LIKE '5[%]' 5%
LIKE '5%' 5 后跟 0 个或更多字符的字符串
LIKE '[_]n' _n
LIKE '_n' an, in, on (and so on)
LIKE '[a-cdf]' a, b, c, d, or f
LIKE '[-acdf]' -, a, c, d, or f
LIKE '[ [ ]' [
LIKE ']' ]
假设运⽤ LIKE 执⾏字符串⽐拟,⽅式字符串中的包括起始空格和/或尾随空格在内的⼀切字符都有意义。
假设查询⽐拟要求前往包括"abc "(abc 后有⼀个空格)的⼀切⾏,则不会前往列值为"abc"(abc 后没有空格)⾏。但是反过去,情况并⾮如此。可以疏忽⽅式所要婚配的表达式中的末尾空格。假设查询⽐拟要求前往包括"abc"(abc 后没有空格)的⼀切⾏,则将前往以"abc"开端且具有零个或多个末尾空格的⼀切⾏。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。