当前位置:Gxlcms > 数据库问题 > sql like谓语注意事项

sql like谓语注意事项

时间:2021-07-01 10:21:17 帮助过:33人阅读

like谓语

sql的like谓语可以使用模式去匹配特定的字符,用于过滤数据,语法形式如下:

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
  • match_expression是任意合法的表达式,如字段名称等。
  • pattern是用于搜索字符串的匹配模式,可以包含合法的通配符,一般数据库都支持的通配符有%_,其中%匹配0个或者多个字符,_匹配一个字符。此外sql server数据库的like谓语还可以使用通配符[][^],但是oracle和mysql的like谓语却不支持,oracle可以使用REGEXP_LIKE
  • escape_character是指定的转义字符,如sqlselect * from Product where name like ‘\%C%‘ escape ‘\‘指定了\作为转义字符,\之后的一个字符就是普通的字符,不再作为通配符进行匹配,那么这个匹配搜索的字符串就是以%C开头的字符串。

注意

在实际使用like谓语时需要注意通配符需要转义的问题,不管是从存储时进行转义还是查询时转义,否则就会出现实际查询结果和预期结果不一致的问题。
在sql server中如我们有如下的数据
技术图片
我们通过前台查询,想要得到以 通知[2019] 开头的数据,如果我们通过select * from Product where name like ‘%通知[2019]%‘这样的sql去查询数据,那么得到的结果如下,和明显这不是我们想要的结果。
技术图片
因为在sql server中[]属于谓语like的通配符,是需要进行转义的,将sql改写为select * from Product where name like ‘%通知\[2019\]%‘ escape ‘\‘即可得到如下的正确结果。
技术图片

参考

  • https://docs.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql?view=sql-server-ver15
  • https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html#operator_like
  • Oracle? Database SQL Language Reference 11g Release 2 (11.2)

sql like谓语注意事项

标签:http   com   where   oracl   mic   cte   tab   doc   tps   

人气教程排行