依赖 T-SQL 比较整理

Lar*_*mie 7 sql-server-2008 sql-server collation

有没有办法根据自变量或列值设置字符串比较的排序规则?类似于

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
Run Code Online (Sandbox Code Playgroud)

或者

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

SELECT COL1, col2
FROM [TABLE]
WHERE COL3 LIKE '%string%'
    COLLATE @collation
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 5

沿着这个思路,有 2 个 where 条件。

一个将成为'%string%' LIKE '%string%'这永远是真的

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%'
Run Code Online (Sandbox Code Playgroud)