Abhängige T-SQL-Vergleichssortierung


7

Gibt es eine Möglichkeit, die Sortierung für einen Zeichenfolgenvergleich basierend auf einer unabhängigen Variablen oder einem Spaltenwert festzulegen? So etwas wie

SELECT COL1, col2
FROM [TABLE]
WHERE COL3 LIKE '%string%'
    COLLATE CASE CASE_SENSITIVE 
                WHEN 1 THEN SQL_Latin1_General_CP1_CS_AS 
                ELSE SQL_Latin1_General_CP1_CI_AS 
            END

oder

DECLARE @collation AS VARCHAR(50)
SET @collation = 'SQL_Latin1_General_CP1_CI_AS' 

SELECT COL1, col2
FROM [TABLE]
WHERE COL3 LIKE '%string%'
    COLLATE @collation

Antworten:


5

In diesem Sinne mit 2 wo Bedingungen.

Man wird werden, '%string%' LIKE '%string%'was immer wahr ist

WHERE
    CASE WHEN @casesenstive = 1 THEN COL3 ELSE '%string%' END
           COLLATE SQL_Latin1_General_CP1_CS_AS LIKE '%string%'
    AND
    CASE WHEN @casesenstive = 0 THEN COL3 ELSE '%string%' END
           COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%string%'

Schön. Hervorragend geeignet für eine binäre Bedingung. Gibt es jedoch eine Möglichkeit, die Kollatierung einer Variablen zu ändern, um mehrere Kollatierungen, Akzentempfindlichkeit, Groß- und Kleinschreibung usw. zu berücksichtigen, außer verschachtelte Groß- und Kleinschreibung zu verwenden?
Laramie

@laramie: nein, sorry. es ist "hart codiert"
gbn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.