Ich führe eine dynamische SQL-Abfrage aus. wo Parameter dynamisch übergeben werden. Ich schrieb zuerst ähnlich dem folgenden Code.
%Vor%Dann habe ich das geschrieben.
%Vor%Dieser Zeitcode wurde erfolgreich ausgeführt. Da der Parameter leer sein kann, muss ich das in null umwandeln. Ich änderte den Code und schrieb dies
%Vor% Keine Fehler. Die Abfrage ist abgestürzt.
Hat jemand diese Art von Problem?
Sie müssen es nicht in NULL konvertieren, sondern prüfen Sie einfach mit Ihrem Wert
%Vor%Versuchen Sie Folgendes:
%Vor% Wenn der Parameter vom Client kommt, machen Sie besser mit der parametrisierten Abfrage (siehe @ ughai's Antwort), um sql injection
möglichkeit auszuschließen ...
Alles mit der Arithmetik von NULL ergibt NULL.
Ich würde dies tun, wenn NULL für die Rückgabe aller Zeilen gedacht ist:
%Vor%Und so, wenn Sie wirklich Zeilen mit NULL-Bedingung haben wollen:
%Vor%Aber andererseits wäre es immer besser, dynamische Abfragen um jeden Preis zu vermeiden. Überlegen Sie:
%Vor%Und:
%Vor%Sie sollten eine parametrisierte Abfrage verwenden, wenn Sie dynamisches SQL verwenden, um SQL Injection zu vermeiden. Lesen Sie < stark> dies für weitere Informationen.
Wenn Sie alle Zeilen zurückgeben möchten, wenn @Id
passed NULL
ist, entfernen Sie einfach ELSE
part.
Tags und Links sql sql-server