用户定义函数 T-SQL 中的大小写敏感性

Posted

技术标签:

【中文标题】用户定义函数 T-SQL 中的大小写敏感性【英文标题】:CaseSensitivity in an user-defined function T-SQL 【发布时间】:2014-09-05 15:27:11 【问题描述】:

我在 T-SQL 中有一个用户定义的函数,它在内部使用 CHARINDEX()。我将 @caseSensitivity(bit) 参数作为输入,它应该决定 CHARINDEX() 函数的大小写(排序规则)。有没有办法做到这一点,而无需为每次出现的 CHARINDEX() 生成两个 if 结构?

【问题讨论】:

你能发布一个代码示例吗? 您是否考虑过CASE 而不是IF。取决于你的逻辑。 @t_m,使用 case 也不会有什么好处,因为它会产生相同数量和质量的代码。 【参考方案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)

【讨论】:

这实际上是一个很好的解决问题的方法。我只是在寻找类似的东西。谢谢!

以上是关于用户定义函数 T-SQL 中的大小写敏感性的主要内容,如果未能解决你的问题,请参考以下文章

数据挖掘实例构建Xgboost模型,在电力用户的95598工单数据中的电费敏感用户预测(低敏用户模型)

php基础学习过程

openGauss维护管理之大小写敏感

数仓如何设置大小写不敏感函数

php学习

T-SQL 中的用户定义聚合函数而不是 .net 程序集? [复制]