我希望了解如何编写一个查询,以便我可以搜索我正在寻找的文本周围有其他文本的列。
我的表目前看起来像这样:
NAME CODES REQUIRED_CODE
------ ----------- -------------
Humpty AB@CD@EF@GH IJ
Minnie AB@CD CD
Mickey ZA@HP@YP HP
我想要做的是添加一个True / False列,它将在代码字段中搜索所需的代码,但我不确定如何写这个。
REQUIRED
NAME CODES REQUIRED_CODE TRU
------ ----------- ------------- -----
Humpty AB@CD@EF@GH IJ False
Minnie AB@CD CD True
Mickey ZA@HP@YP HP True
如果有人可以建议我如何撰写本文,我将不胜感激。
提前致谢。
答案 0 :(得分:-1)
您需要创建一个触发器,该触发器将在插入和更新时触发,以保持布尔列的值。
如果你的桌子的DDL看起来像这样:
create table tab (
codes varchar2(30),
required_code varchar2(3),
code_found varchar2(3)
);
然后像这样触发DDL可能会对你有用。
create or replace trigger tab_code_found before insert or update
on tab for each row
begin
if :new.codes like '%' || :new.required_code || '%' then
:new.code_found := 'YES';
else
:new.code_found := 'NO';
end if;
end;
您可以使用此谓词来代替类似运算符,这可能会消耗更少的CPU周期:
instr(:new.codes, :new.required_code) > 0