我有一种情况,我创建了脚本来在我们公司的环境中选择数据。为此,我决定在 CASE WHEN 中使用函数进行一些模式匹配和字符剥离。
但是,我们的一位客户不想让我们将他们的数据放在本地环境中,所以我现在需要按摩脚本才能在他们的环境中运行——本质上意味着我需要删除这些功能,而且我在考虑如何移动东西来做到这一点时遇到了麻烦。
函数调用的一个示例是:
SELECT ....
CASE WHEN Prp = 'Key Cabinet'
AND SerialNumber IS NOT NULL
AND dbo.fnRemoveNonNumericCharacters(SerialNumber) <> ''
THEN dbo.fnRemoveNonNumericCharacters(SerialNumber)
....
INTO #EmpProperty
FROM ....
wherePrp
是包含属性类型SerialNumber
的列,是包含序列号的列,还有一些其他随机垃圾,因为数据输入很草率。
函数定义为:
WHILE PATINDEX('%[^0-9]%', @strText) > 0
BEGIN
SET @strText = STUFF(@strText, PATINDEX('%[^0-9]%', @strText), 1, '')
END
RETURN @strText
我要经过的地方@strText
在哪里。SerialNumber
我可能会陷入分析瘫痪,因为我只是想不出一个好方法来做到这一点。我不需要一个完整的解决方案,也许只是给我指出一个你知道会起作用的方向。让我知道您是否想要一些示例 DDL/DML 来解决问题。
示例“序列号”值:CA100 (Trash bins)
、T110
、101B
。还有一堆其他类型的值,例如所有文本或所有数字,但我们正在过滤掉它们。当前的图案匹配已经足够好了。