ORACLE 数据 库|转义 整个 字符 串 变量

5lwkijsr  于 2022-11-22  发布在  Oracle
关注(0)|答案(1)|浏览(112)

我有一个变量,里面有一个左括号和一个右括号,但是它被regexp_like读取为正则表达式,因此使下面的代码无效。

declare 
    TW_keyword varchar2(100) := 'THE QUICK (BROWN)';
    tw_result  varchar2(100);
begin 
    SELECT CASE
    WHEN regexp_like ('IS THE QUICK (BROWN) FOW', '(^|\W)'|| TW_keyword ||'($|\W)')
    THEN 'found'
    ELSE 'not found'
    END rl INTO tw_result 
    FROM DUAL;
    
    dbms_output.put_line(tw_result);
end;

结果:

PL/SQL procedure successfully completed.
not found
w8f9ii69

w8f9ii691#

如果它只是你所期望的括号,那么像这样的东西应该做

SQL> declare
  2      TW_keyword varchar2(100) := 'THE QUICK (BROWN)';
  3      tw_result  varchar2(100);
  4  begin
  5      tw_result := CASE
  6      WHEN regexp_like ('IS THE QUICK (BROWN) FOW', '(^|\W)'|| replace(replace(TW_keyword,'(','\('),')','\)') ||'($|\W)')
  7      THEN 'found'
  8      ELSE 'not found'
  9      END;
 10
 11      dbms_output.put_line(tw_result);
 12  end;
 13  /
found

PL/SQL procedure successfully completed.

请注意,您也不必仅为执行赋值而从双变量中进行选择

相关问题