SQL Server 2012
我的表中有 3 列将使用一个函数。'[usr].[Udf_OverPunch]'。和子串。
这是我的代码:
[usr].[Udf_OverPunch](SUBSTRING(col001, 184, 11)) as REPORTED_GAP_DISCOUNT_PREVIOUS_AMOUNT
此功能适用于我需要它做的事情。它基本上是根据数据字典将符号或字母转换为指定的数字。
我遇到的问题是有前导零。我刚刚问了一个关于前导零的问题,但它不允许我用函数列来做,因为符号不能转换为 int。
这就是我用来在其他列的代码中去掉前导零(但留下一个零)的方法:
cast(cast(SUBSTRING(col001, 217, 6) as int) as varchar(25)) as PREVIOUS_REPORTING_PERIOD
这适用于将 '000000' 的值转换为一个 '0' 或将 '000060' 的值转换为 '60' 但由于符号或字母(尝试转换为 int 时)而无法使用该函数。
正如我所提到的,我有 3 列在不使用函数时产生的值看起来像这样:
'0000019753{'
'0000019748G'
'0000019763H'
我的目标是在使用该函数的同时删除前导零(除非它们全为零,然后保持一个零)。
这是我尝试但不起作用的方法,因为该值包含一个不是整数的字符:
[usr].[Udf_OverPunch]cast(cast(SUBSTRING(col001, 184, 6) as int) as varchar(25)) as REPORTED_GAP_DISCOUNT_PREVIOUS_AMOUNT,
如果您有任何想法或需要更多信息,请告诉我。:)