SQL Server特殊符号的转义(特殊符号转义 和 使用万能关键词ESCAPE转义)

 

SQL Server特殊的符号转义(特殊符号转义 和 使用万能关键词ESCAPE转义)

 

1.在like语句中,使用[] 和 使用Escape 来转义:

特殊符号A类(如%  [  []  _,用[]包括起来):

对于特殊字符'%','[','[]', '_' 可以使用 '[]' 把它们包含起来: 

select * from [dbo].[Locations] where [state] like '%[%]%'
select * from [dbo].[Locations] where [city] like '%[[]]%'

  

特殊符号B类(如^ ] -,额外用万能关键字escape 指出来):

对于特殊字符'^', ']', '-'  因为它们本身在包含在 '[]' 中使用,所以需要用另外的方式来转义,于是就引入了 like 中的 escape 子句。

另外值得注意的是:escape 可以转义所有的特殊字符: 

select * from [dbo].[Locations] where [city] like '%Beijing]%' escape ']'   --将]识别为普通字符
--SQLServer查询的结果是:[city]列中 含Beijing]字符串的所有数据

  

/*   LIKE后跟的 万能转义关键字:escape    */
select * from [tableX] where [columnX] LIKE 'AB&%' ESCAPE '&' --将&识别为普通字符
--SQLServer查询的结果是:[columnX]列中结尾是AB&字符串的所有数据

   

 

 

2.使用两个符号作转义(如:单引号' ):

    默认情况下,单引号 '是字符串的边界符, 如果在字符串中包含', 则必须使用两个单引号'。第1个'就是转义符:

select * from [dbo].[Locations] where [city] like '%''%'   --两个字符,将特殊符号转为普通字符 
--SQLServer查询的结果是:[city]列中包含是'字符串的所有数据

  上方两个百分号中间的单引号(蓝色背景的),第一个是转义符,第二个是需要查询的条件' 。

 

select replace('abcdefg''','''','!') 
--这个语句是为了把字符串{abcdefg'}里面的{'}替换成{!},所以SqlServer查询的结果是{abcdefg!}

   上方蓝色背景的两对单引号,分别都是为了转换为字符串内的一个单引号。( ''  ==>' )
        replace括号里的三个参数都用引号包含(三个外层引号),与属于字符串部分的引号互不干扰。

 

 

------------------------------------------------------------------------------------------------------------------------------

在实际项⽬中,发现对于like操作还有以下特殊字符:下划线“_”,百分号“%”,⽅括号“[]”以及尖号“^”。

其⽤途如下:

下划线(_):⽤于代替⼀个任意字符(相当于正则表达式中的 ? )

百分号(%):⽤于代替任意数⽬的任意字符(相当于正则表达式中的 * )

⽅括号([]):⽤于转义(事实上只有左⽅括号⽤于转义,右⽅括号使⽤最近优先原则匹配最近的左⽅括号)

尖号(^):⽤于排除⼀些字符进⾏匹配(这个与正则表达式中的⼀样)

以下是⼀些匹配的举例,需要说明的是,只有like操作才有这些特殊字符,=操作是没有的。

a_b... a[_]b%

a%b... a[%]b%

a[b... a[[]b%

a]b... a]b%

a[]b... a[[]]b%

a[^]b... a[[][^]]b%

a[^^]b... a[[][^][^]]b%

在实际进⾏处理的时候,对于=操作,我们⼀般只需要如此替换:

' -> ''

对于like操作,需要进⾏以下替换(注意顺序也很重要)

[ -> [[] (这个必须是第⼀个替换的!!)

% -> [%] (这⾥%是指希望匹配的字符本⾝包括的%⽽不是专门⽤于匹配的通配符)

_ -> [_]

^ -> [^]

------------------------------------------------------------------------------------------------------------------------------

 

 

·

 

posted @ 2024-01-11 18:07  亟待!  阅读(2817)  评论(0编辑  收藏  举报
……