使用SQL语句查询是开发中常做的事,在实际的情况中,可能会遇到,查询包含某个关键词的所有行,而这个关键词正好也是SQL SERVER的关键词。

下面有一张表Member,有如下的数据:

SQL SERVER 使用ESCAPE转义

假如需要查询名字中包含%字符的数据,首先我们会有这样的查询语句:

SELECT * FROM dbo.Member WHERE Name LIKE '%%%'

但是由于%在SQL SERSER中是关键字,此时需要转义,没有转义的写法可以如下:

SELECT * FROM dbo.Member WHERE Name LIKE '%[%]%'

转义的写法如下,使用ESCAPE指定转义符:

SELECT * FROM dbo.Member WHERE Name LIKE '%~%%' ESCAPE '~'

SQL SERVER 使用ESCAPE转义

 

在项目中使用Entity Framework时,比如名称是否包含%,则DBContext.Set<Member>().Where(m => m.Name.Contains("%")),然后使用SQL Profiler可以看出Entity Framework生成的SQL是使用了~作为转义符。开发中如果是我们手写SQL(非ORM自动生成),转义符可以自由指定,例如:\

 

相关文章:

  • 2022-02-10
  • 2022-12-23
  • 2022-02-27
  • 2021-12-30
  • 2021-09-27
  • 2021-05-29
猜你喜欢
  • 2021-10-09
  • 2021-08-22
  • 2022-01-25
  • 2021-08-22
  • 2022-12-23
  • 2021-06-24
相关资源
相似解决方案