SQL - select * from X WHERE (wenn der Wert numerisch ist, sonst ...)
Ich brauchen würde, um eine DB zu wählen, wird sich anders Verhalten, wenn Zahl oder text eingegeben wird, werden nur andere Bedingung verwendet werden soll. Ich denke, es sollte getan werden, aber nicht ganz sicher mit der syntax (MSSQL). Danke
Ich würde brauchen:
SELECT *
FROM X
WHERE (IF value passed is numeric = "ID" ELSE "NAME") = Value //ID or Name are columns
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf deinem Beispiel:
...arbeiten würde, möchte ich betonen, dass der Ansatz nicht sargable - es wird nicht so gut, wie es sollte.
Wenn man es mit einem einzigen parameter, Verwendung einer IF-ELSE wäre besser:
Die andere alternative (die sollten auf jeden Fall berücksichtigt werden, wenn der Umgang mit mehr als einem filter-Kriterien), ist die Verwendung von dynamischem SQL. Ich empfehle die Lektüre Der Fluch und Segen von dynamischem SQL bevor der Blick auf diese SQL-Server 2005+ Beispiel:
Ich nehme an, es ist der code irgendwo, dass Konstrukte dieser Abfrage und sendet Sie an die Datenbank? Warum nicht, die Codes zu bestimmen, ob der Wert numerisch ist, und generieren Sie die entsprechende Abfrage? Es hält die Abfrage sauberer und hat den Vorteil, dass Sie kompatibel mit nahezu allen RDBMS auf dem Planeten.
Dies ist eine Möglichkeit, aber deine Frage ist ein bisschen vage
Einfach nur das abrufen der numerischen Werte:
Komplexer:
zwei Möglichkeiten:
verwenden oder
oder vielleicht mit union