sql like谓语注意事项

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 '\'即可得到如下的正确结果。

参考

posted @ 2020-03-22 17:15  ZiYangZhou  阅读(222)  评论(0编辑  收藏  举报