Đối chiếu so sánh T-SQL phụ thuộc


7

Có cách nào để đặt đối chiếu cho so sánh chuỗi dựa trên một biến độc lập hoặc giá trị cột không? Một cái gì đó giống với

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

hoặc là

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

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

Câu trả lời:


5

Dọc theo dòng này với 2 điều kiện.

Một người sẽ trở thành '%string%' LIKE '%string%'luôn luôn đúng

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%'

Đẹp một. Tuyệt vời cho một điều kiện nhị phân, nhưng có cách nào để chuyển đối chiếu trên một biến để phù hợp với một số đối chiếu, độ nhạy trọng âm, trường hợp, v.v. ngoài việc thực hiện các câu lệnh tình huống lồng nhau không?
Laramie

@laramie: không, xin lỗi. đó là "mã hóa cứng"
gbn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.