我在T-SQL中有一个用户定义的函数,它在内部使用CHARINDEX()。我将@caseSensitivity(bit)参数作为输入,它应该决定CHARINDEX()函数的大小写(校对)。有没有办法做到这一点,而不是为CHARINDEX()的每个出现制作两个if结构?
答案 0 :(得分:1)
不幸的是,有isn't a way to set a connection-level collation override,如果这就是你的想法(我是)。
但是,如果您只是想找到一种方法来更容易地控制它,那么您可以将所有CHARINDEX查找评估为区分大小写,然后使用UPPER使其不区分大小写当@caseSensitive为零时:
DECLARE @caseSensitivity BIT = 1
DECLARE @input VARCHAR(3) = 'Abc'
DECLARE @inputCheck VARCHAR(3) = 'B'
IF @caseSensitivity = 0
BEGIN
SET @input = UPPER(@input)
SET @inputCheck = UPPER(@input)
END
SELECT CHARINDEX(@inputCheck COLLATE SQL_Latin1_General_CP1_CS_AS, @input COLLATE SQL_Latin1_General_CP1_CS_AS, 0)