我需要一种检查字符串中是否具有以下确切模式的方法,即:
(P)
这是正确的示例是:
Test System (P)
我不确定如何检查没有'(P)'的字符串的情况,即:
'“测试系统(Professional的GUI)'-在这种情况下,这将是错误的,但是我使用的是REGEXP_LIKE,它实际上返回TRUE。
我只希望当搜索字符串中存在'(P)'的确切字符串时,它返回True。
如何在PL / SQL中执行此操作?
用途:
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)'
类似也可以使用:
WHERE t.column LIKE '%(P)%' --column contains '(P)'
WHERE t.column NOT LIKE '%(P)%' --column does NOT contain '(P)'
尝试like
:
WHERE thing like '%(P)%';
我会坚持使用REGEXP_*
函数,因为无论如何您都需要练习它们,并且知道正则表达式将很适合您。
它们都是很好的答案,除了小马的第一个答案有错字。 :
错别字是REGEX_LIKE中缺少P:
书面:REGEX_LIKE(t.column, '\(P\)')
正确:REGEXP_LIKE(T.COLUMN, '\(P\)')
'\'是一个转义字符,它表示“不要寻找下一个字符的符号含义,而是要寻找文字字符本身。”