LIKE查询中特殊字符的特殊处理

SQL语句中,我们可以在WHERE子句里使用LIKE来达到模糊查询的目的。
 
LIKE子句支持的通配符如下:
  • %:零或者多个字符
  • _:单一任何字符(下划线)
  • \:特殊字符
  • []:在某一范围内的字符,如[0-9]或者[aeiou] 
  • [^]:不在某范围内的字符,如[^0-9]或者[^aeiou]
不过,在某些情况下,我们可能有查询CHAR或VARCHAR中的“%”或“_”字符的需求,为达到这类目标,我们需要使用ESCAPE子句。
 
ESCAPE子句规定ESCAPE字符,如果ESCAPE字符出现在" % "或" _ "字符之前,Oracle会把通常意义中的通配符解释成为它原来的意义,而不是作为一种特殊的模式匹配。
 
ESCAPE子句的用法如下。
 
场景:如果我们想在employees表中搜索'A_B'模式的用户:
 
SELECT last_name
 FROM employees
 WHERE last_name LIKE '%A\_B%' ESCAPE '\';
 
ESCAPE子句定义了反斜杠(\)为转义字符。
 
在本例中,转义字符转义了‘_’,这使得Oracle按照‘_’的本义来翻译它,而不是把它当成通配符。




posted @ 2011-11-28 12:31  __BSD__  阅读(762)  评论(0编辑  收藏  举报