sql like谓语注意事项

Posted Oh,L.E.D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql like谓语注意事项相关的知识,希望对你有一定的参考价值。

like谓语

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

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
  • match_expression是任意合法的表达式,如字段名称等。
  • pattern是用于搜索字符串的匹配模式,可以包含合法的通配符,一般数据库都支持的通配符有%_,其中%匹配0个或者多个字符,_匹配一个字符。此外sql server数据库的like谓语还可以使用通配符[][^],但是oracle和mysqllike谓语却不支持,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 \'\\\'即可得到如下的正确结果。

参考

以上是关于sql like谓语注意事项的主要内容,如果未能解决你的问题,请参考以下文章

SQLite的LIKE语句实现字符片段筛选的功能

SQLite的LIKE语句实现字符片段筛选的功能

SQLite的LIKE语句实现字符片段筛选的功能

[词性] 五动词

Google App Engine 和 SQL LIKE

SQL like