2016-05-03 5 views
0

Вопрос о поиске запроса по строковой переменной.Поиск Oracle по строковой переменной

declare 
phone varchar(15):='+77071414714'; 
cnt number:=0; 
begin 
    SELECT COUNT(*) into cnt FROM CUSTOMERS WHERE (TELNUMBER=phone OR TELNUMBER LIKE phone); 
    dbms_output.put_line(cnt); 
end; 

этот код печатает 0 в то время как

declare 
    cnt number:=0; 
begin 
    SELECT COUNT(*) into cnt FROM CUSTOMERS WHERE TELNUMBER='+77071414714'; 
    dbms_output.put_line(cnt); 
end; 

печатает 5. , как я могу сделать первый код для печати 5?

+0

Вы можете проверить тип данных столбца TELNUMBER в таблице CUSTOMERS? Кроме того, помимо вашего вопроса, обратите внимание, что телефон TELNUMBER LIKE не принесет вам никакой пользы; вы, вероятно, хотите что-то вроде TELNUMBER LIKE '%' || телефон || '%' или, возможно, даже более сложный, в зависимости от возможных форматов столбца TELNUMBER в вашей таблице. – mathguy

ответ

0

Попробуйте

declare phone varchar(30) DEFAULT '+77071414714'; 
declare cnt number:=0; 
begin 
    SELECT COUNT(*) into cnt FROM CUSTOMERS WHERE TELNUMBER=phone; 
    dbms_output.put_line(cnt); 
end; 
+0

Проблема в том, что я передаю телефонную переменную в качестве параметра для работы. поэтому во время выполнения кода переменная «телефон» неизвестна. –

+0

какой функция вы говорите ?? –

0

Проблема решена. Проблема заключалась в типе данных столбца TELNUMBER, это был CHAR (15). Изменяя его на VARCHAR (15), он решается. Благодаря mathguy.

Смежные вопросы