2016-05-03 15 views
0

Frage ist über die Abfrage nach String-Variable zu suchen.Oracle Suche nach String-Variable

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; 

dieser Code druckt 0. während

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

druckt 5. Wie kann ich erste Code machen 5 drucken?

+0

Können Sie den Datentyp der Spalte TELNUMBER in der Tabelle CUSTOMERS überprüfen? Auch - abgesehen von Ihrer Frage - beachten Sie, dass TELNUMBER LIKE Telefon Ihnen nicht gut tut; Du willst wahrscheinlich etwas wie TELNUMBER LIKE '%' || Telefon || '%' oder vielleicht noch komplizierter, abhängig von den möglichen Formaten der TELNUMBER-Spalte in Ihrer Tabelle. – mathguy

Antwort

0

Versuchen Sie, diese

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

Das Problem ist, dass ich die Telefonvariable als Parameter zur Funktion übergebe. Zum Zeitpunkt der Ausführung des Codes ist die Variable "Telefon" unbekannt. –

+0

über welche Funktion sprichst du ?? –

0

Das Problem ist gelöst. Das Problem lag im Datentyp der Spalte TELNUMBER, es war CHAR (15). Indem man es zu VARCHAR (15) ändert, ist es gelöst. Danke an Mathguy.