【问题标题】:Need help removing functions from CASE WHEN需要帮助从 CASE WHEN 中删除功能
【发布时间】:2017-12-07 18:10:19
【问题描述】:

我有一种情况,我创建了脚本来选择我们公司环境中的数据。为此,我决定在 CASE WHEN 中使用函数进行一些模式匹配和字符剥离。

但是,我们的一位客户不想让我们将他们的数据放在我们的本地环境中,所以我现在需要按摩脚本才能在他们的环境中运行——本质上意味着我需要删除这些功能,我无法考虑如何移动东西才能做到这一点。

函数调用的一个例子是:

SELECT ....
CASE WHEN Prp = 'Key Cabinet'
        AND SerialNumber IS NOT NULL
        AND dbo.fnRemoveNonNumericCharacters(SerialNumber) <> ''
     THEN dbo.fnRemoveNonNumericCharacters(SerialNumber)
....
INTO #EmpProperty
FROM ....

其中Prp 是包含属性类型的列,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)T110101B。 还有一堆其他类型的值,例如所有文本或所有数字,但我们正在过滤掉它们。目前的模式匹配已经足够好了。

【问题讨论】:

  • 那一栏有什么内容?你能举一些数据例子吗?
  • 听起来不错@scsimon!我放了一些。

标签: loops tsql pattern-matching patindex


【解决方案1】:

所以我认为你的意思是你不能使用函数......所以,也许:

declare @table table (SomeCol varchar(4000))
insert into @table values
('1 ab2cdefghijk3lmnopqr4stuvwxyz5 6 !7@#$8%^&9*()-10_=11+[]{}12\|;:13></14? 15'),
('CA100 (Trash bins), T110, 101B')

;with cte as (
    select top (100) 
    N=row_number() over (order by @@spid) from sys.all_columns),

Final as (
    select SomeCol, Col
    from @table
        cross apply (
            select (select X + ''
            from (select N, substring(SomeCol, N, 1) X 
                  from cte 
                  where N<=datalength(SomeCol)) [1]
            where X between '0' and '9'
            order by N
            for xml path(''))
        ) Z (Col)
    where Z.Col is not NULL
)

select 
    SomeCol
    ,cast(Col as varchar) CleanCol  --change this to BIGINT if it isn't too large
from Final

【讨论】:

    猜你喜欢
    • 2022-10-05
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多