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按照‘_’的本义来翻译它,而不是把它当成通配符。