2016-10-25 2 views
-1

Я не могу дрожать от ошибки «Отсутствие правильной круглой скобки» от этого скрипта.SELECT statement in a LIKE

INSERT INTO RECHARGES_TEMP_1 
SELECT INT_SUBSCRIBER_ID,TRANS_DATE,FACE_VALUE,RECHARGE_COMMENT 
FROM TDW.RECHG_HIST_DETAILS 
WHERE BALANCE_ID=1 
AND (RECHARGE_COMMENT LIKE '%785031357%' (SELECT d.st,T.INT_SUBSCRIBER_ID SUB,'%''' 
              FROM TEMP_01 t, (select 'OR RECHARGE_COMMENT LIKE ''%' st from dual) d 
              WHERE T.AREA LIKE 'Jaffna')) 
AND TRANS_DATE BETWEEN 20161018 AND 20161019 

внутренний результат оператор выбора:

OR RECHARGE_COMMENT LIKE '% 785049513 %' 
OR RECHARGE_COMMENT LIKE '% 785049514 %' 
OR RECHARGE_COMMENT LIKE '% 785049515 %' 
OR RECHARGE_COMMENT LIKE '% 785049555 %' 
OR RECHARGE_COMMENT LIKE '% 785049556 %' 
OR RECHARGE_COMMENT LIKE '% 785049557 %' 
OR RECHARGE_COMMENT LIKE '% 785049558 %' 
OR RECHARGE_COMMENT LIKE '% 785049559 %' 
OR RECHARGE_COMMENT LIKE '% 785049562 %' 
OR RECHARGE_COMMENT LIKE '% 785049563 %' 
OR RECHARGE_COMMENT LIKE '% 785049566 %' 
OR RECHARGE_COMMENT LIKE '% 785049577 %' 
+2

что, как это очень странно. Что ты пытаешься сделать? Отсутствует AND/OR? – jarlh

+2

Вы не можете добавить такие SQL-условия. Для этого вам понадобится динамический SQL (и: почему вы храните даты как целые числа?) –

+0

Возможный дубликат [Dynamic «LIKE» Statement в SQL (Oracle)] (http://stackoverflow.com/questions/8327616/dynamic -like-statement-in-sql-oracle) – Michael

ответ

2

Я не совсем уверен, что вы пытаетесь сделать, но я кажется, как будто вы хотите что-то вроде этого:

INSERT INTO recharges_temp_1 
SELECT int_subscriber_id,trans_date,face_value,recharge_comment 
FROM tdw.rechg_hist_details rhd 
WHERE balance_id=1 
    AND exists (select 1 
       from TEMP_01 t 
       where t.area = 'Jaffna' 
       and instr(rhd.recharge_comment, t.int_subscriber_id) > 0) 
    AND trans_date BETWEEN 20161018 AND 20161019 
+0

int_subscriber_id должен быть окружен пробелами –

+0

@DuduMarkovitz: Я так не думаю, потому что конкатенация в исходном заявлении не добавляет пробелов. –

+0

'OR RECHARGE_COMMENT LIKE '% 785049513%'' –

1
INSERT INTO RECHARGES_TEMP_1 
SELECT  INT_SUBSCRIBER_ID,TRANS_DATE,FACE_VALUE,RECHARGE_COMMENT 
FROM  TDW.RECHG_HIST_DETAILS 
WHERE  BALANCE_ID=1 
     AND (RECHARGE_COMMENT LIKE '%785031357%' 

      or exists 
       (
        SELECT null 
        FROM  TEMP_01 t        
        WHERE  T.AREA = 'Jaffna' 
         and RECHARGE_COMMENT like '%' || trim (T.INT_SUBSCRIBER_ID) || '%' 
       ) 
      ) 

     AND TRANS_DATE BETWEEN date '2016-10-18' AND date '2016-10-19' 
; 

Ps

  • Я предполагаю, TRANS_DATE это дата, а не целое
  • Вы должны знать, в пространстве, окружающем INT_SUBSCRIBER_ID