MYSQL 5 Procedur Parameter für where NULL und IN Abfrage?
baeckerman83
- datenbank
1 dedlfix0 baeckerman830 dedlfix
Hiho!
Ich versuche gerade eine Procedure zu schreiben. Das meiste habe ich auch schon hinbekommen. Jetzt hänge ich aber an zwei Punkten. Einmal möchte ich eine Kommaseperierte Liste übergeben für einen Vergleich "spalte is in (15,19)", ausserdem möchte ich einen Paramter übergeben für den verleichen "zeile is null", zeile is not null. Ich habe die Parameter als Varchar gemacht, aber leider klappt es nicht. Man kann scheinbar keine Texte einfügen. Wie kann ich das lösen?
Hier mal das, was ich schon mal versucht habe:
CREATE PROCEDURE p_filter_easy( i_liga varchar(1000), i_null varchar(10))
BEGIN
select
id,
datum
from werte
where 1
and id IN (i_id)
and datum is i_null;
END
Tach!
and id IN (i_id)
Der Inhalt einer Variable wird nicht automatisch als Code angesehen, nur weil sich darin vielleicht zufälligerweise Kommas befinden. FIND_IN_SET() nimmt jedoch einen String mit kommaseparierten Werten entgegen.
and datum is i_null;
Die Syntax zum Vergleich mit NULL lautet IS NULL mit einem variablen Wert auf der linken Seite. Es gibt jedoch andere Funktionen und Operatoren, um dein Ziel zu erreichen. Such auf der verlinkten Seite nach den Vorkommen des Wortes null.
dedlfix.
Vielen Dank!Das hat beides geholfen.
Habe es jetzt mit
and FIND_IN_SET(id, i_id)>=1
and ISNULL(datum) = i_null
gelöst. Wobei i_null TRUE oder FALSE ist.
Tach!
and FIND_IN_SET(id, i_id)>=1
Wenn das Element nicht im Set enthalten ist, gibt FIND_IN_SET() ein NULL zurück. Besser ist es also, IS NULL oder IS NOT NULL zu testen.
dedlfix.