it-swarm.com.de

SQL Server: Verwenden Sie CASE mit LIKE

Ich bin ziemlich neu in SQL und hoffe, dass mir hier jemand helfen kann. 

Ich habe eine gespeicherte Prozedur, bei der ich einen anderen Wert übergeben möchte, je nachdem, ob eine Spalte ein bestimmtes Land enthält oder nicht. 

Bisher habe ich nur CASE verwendet, wenn ich nach einer Übereinstimmung mit einer bestimmten Zahl oder einem bestimmten Wert suchte, so dass ich mir nicht sicher bin. Kann mir jemand sagen, ob das Folgende gültig und richtig ist, oder lassen Sie mich wissen, wie ich dies richtig schreiben soll (nur bezüglich des Teils in Klammern)?

(CASE countries
     WHEN LIKE '%'[email protected]+'%' THEN 'national'
     ELSE 'regional') AS validity

Hinweise: @selCountry ist der Variablenname eines Landes. Länder können entweder leer sein, ein Land oder mehrere Länder, die durch Komma und Leerzeichen getrennt sind. Im Grunde möchte ich nur prüfen, ob Länder @selCountry enthalten, und wenn ja, setzen Sie die Gültigkeit auf 'national'.

15
Mike

Diese Syntax benötigen Sie:

CASE WHEN countries LIKE '%'[email protected]+'%' THEN 'national' ELSE 'regional' END

Obwohl ich das ursprüngliche Problem gelöst habe, würde ich es anders lösen, den Inhalt von @selcountry in eine Tabellenform aufteilen und sich daran anschließen.

28
dean

Fügen Sie endlich eine END vor dem Aliasnamen hinzu.

CASE WHEN countries LIKE '%'[email protected]+'%' 
     THEN 'national' ELSE 'regional' 
END AS validity

Zum Beispiel:

SELECT CASE WHEN countries LIKE '%'[email protected]+'%' 
       THEN 'national' ELSE 'regional' 
       END AS validity
FROM TableName
1
Raging Bull

Das können Sie auch so machen

select *
from table
where columnName like '%' + case when @varColumn is null then '' else @varColumn end  +  ' %'
1
MelPogz