我需要一种检查字符串是否具有以下确切模式的方法,即:
(P)
这样的例子是:
'测试系统(P)'
不确定如何检查没有'(P)'的字符串的情况,即:
'测试系统(教授的GUI)' - 在这种情况下,这将是假的,但我使用的是REGEXP_LIKE,它实际上返回TRUE。
我只希望它在搜索字符串中存在'(P)'的确切字符串时返回True。
使用PL / SQL实现这一目标的任何帮助都会很棒。
感谢。
答案 0 :(得分:4)
使用:
REGEX_LIKE(t.column, '\(P\)')
Regular-Expressions.info是一个很好的资源。
常规INSTR可行(Oracle 8i +):
WHERE INSTR(t.column, '(P)') > 0 --column contains '(P)'
WHERE INSTR(t.column, '(P)') = 0 --column does NOT contain '(P)'
LIKE也有效:
WHERE t.column LIKE '%(P)%' --column contains '(P)'
WHERE t.column NOT LIKE '%(P)%' --column does NOT contain '(P)'
答案 1 :(得分:2)
尝试like
:
WHERE thing like '%(P)%';
答案 2 :(得分:0)
我会坚持使用REGEXP_*
函数,因为你无论如何都需要练习它们,知道正则表达式会很好地为你服务。
他们都是很好的答案,除了小马的第一个回答中的拼写错误。 :
错误是REGEX_LIKE中缺少 P :
写作:REGEX_LIKE(t.column, '\(P\)')
正确:REGEXP_LIKE(T.COLUMN, '\(P\)')
'\'是一个转义字符,表示“不要寻找下一个字符的符号含义,而是寻找文字字符本身。”