baeckerman83: MYSQL 5 Procedur Parameter für where NULL und IN Abfrage?

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
  1. 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.

    1. 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.

      1. 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.