如何将文本列拆分为3个数字列

时间:2015-10-21 18:34:44

标签: split calculated-columns

我有一个带有文本列的表格,用于识别产品。但是在那个产品识别栏中,我需要在中间有一个数字用于数学运算。产品编号示例: AB12345-002-004 我想用连字符' - '。

之间的中间数字002进行数学运算

我已经尝试过我遇到的分裂串功能,但它没有给我一行,它会返回多行。

这是我写的代码:

select (k.int_item_no), k.cust_item_id, cast(k.splitdata as bigint) pkqty
from
(
Select  a.int_item_no, a.Cust_Item_ID, b.splitdata 
from [dbo].[Item Cust] a
cross apply dbo.fnSplitString(a.cust_item_id, '-') as b
) k

返回如下行:(我需要12,14,12但却无法获得该行。)
SF12441 1479030-12 1479030 SF12441 1479030-12 12 LA52131 1479134-14-1 1479134 LA52131 1479134-14-1 14 LA52131 1479134-14-1 1 PA08225 1481392-012-002 1481392 PA08225 1481392-012-002 12 PA08225 1481392-012-002 2

以下是我尝试使用的功能(感谢任何人将其放在一起)。

CREATE FUNCTION [dbo].[fnSplitString] 
( 
    @string NVARCHAR(MAX), 
    @delimiter CHAR(1) 
) 
RETURNS @output TABLE(splitdata NVARCHAR(MAX) 
) 
BEGIN 
    DECLARE @start INT, @end INT 
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
    WHILE @start < LEN(@string) + 1 BEGIN 
        IF @end = 0  
            SET @end = LEN(@string) + 1

        INSERT INTO @output (splitdata)  
        VALUES(SUBSTRING(@string, @start, @end - @start)) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(@delimiter, @string, @start)

    END 
    RETURN 
END

0 个答案:

没有答案