は%の連結
CREATE TABLE LOVALARM(POINTID VARCHAR2(50) ,TXT VARCHAR2(50));
create table deleteThese(deleteStringList varchar2(50));
/
INSERT INTO LOVALARM(POINTID, TXT) VALUES('abc def','1');
INSERT INTO LOVALARM(POINTID, TXT) VALUES('def','2');
INSERT INTO LOVALARM(POINTID, TXT) VALUES('abc','3');
INSERT INTO LOVALARM(POINTID, TXT) VALUES('efd','4');
INSERT INTO LOVALARM(POINTID, TXT) VALUES('abb','5');
INSERT INTO LOVALARM(POINTID, TXT) VALUES('efd bbb','6');
INSERT INTO LOVALARM(POINTID, TXT) VALUES('abb ccc','7');
INSERT INTO LOVALARM(POINTID, TXT) VALUES('abbbccc','8');
INSERT INTO DELETETHESE(DELETESTRINGLIST) VALUES('abc');
INSERT INTO DELETETHESE(DELETESTRINGLIST) VALUES('bbb');
COMMIT;
/
DELETE LOVALARM
where exists(
SELECT NULL
FROM DELETETHESE
where LOVALARM.pointid like '%' || dELETETHESE.DELETESTRINGLIST || '%'
);
select * from LOVALARM;
POINTID TXT
-------------------------------------------------- -----
def 2
efd 4
ABB 5
abb ccc 7
と例です。あなたは私にそれを打つ!私はちょうど彼がLIKEを使いたがっていることに気が付いたので、私はちょうどその答えを変えようとしていました。 – BG100
'd.pointid'に実際にワイルドカードが含まれていない限り、この' LIKE'は基本的に等価性テストです。あなたは 'a.pointid LIKE d.pointid || '%''のようなものが必要かもしれません。 –
@Dave:ワイルドカードを使用しないと、LIKEは同等のテストとして扱われます(効率的なアクセスパスの使用を妨げる可能性もあります)。私は小さな例を追加するつもりだった。 –