sql server解析列并插入另一列

时间:2015-08-13 19:51:41

标签: sql sql-server parsing

我有一个包含字符和数字的列,由Underscore

分隔

例如:PI(列名称)= ID_32,ID_43,ID_03

我还创建了一个名为UniqueColumn的新列。在本专栏中,我只想要PI列中的数字

因此它应如下所示:UniqueColumn = 32,43,03

到目前为止我的代码:

getMessage()

2 个答案:

答案 0 :(得分:1)

UPDATE table SET UniqueColumn = substring(PI, charindex('_',PI)+1, len(PI));

使用charindex查找_,然后使用substring获取结果。

答案 1 :(得分:0)

如果下划线左侧的字符始终为" ID",则可以使用Replace()函数。

Update table
Set UniqueColumn = Replace(PI,'ID_','')

如果字符并非总是特定的' ID'那么这样的事情可能有用:

DECLARE @UQ as varchar(50)
DECLARE TblCursor CURSOR
    FOR SELECT PI FROM testTable
OPEN tblCursor
FETCH NEXT FROM tblCursor INTO @UQ
WHILE @@FETCH_STATUS = 0
    BEGIN
        WHILE CHARINDEX('_',@UQ)>0
            BEGIN
                SET @UQ = LEFT(@UQ,PATINDEX('%[^0-9,]%',@UQ)-1) + RIGHT(@UQ,LEN(@UQ)-CHARINDEX('_',@UQ))
            END
        UPDATE testTable
        SET UniqueColumn = @UQ
        WHERE CURRENT OF tblCursor
        FETCH NEXT FROM tblCursor
    END
CLOSE tblCursor
DEALLOCATE tblCursor
GO

结果:

PI                   UniqueColumn 
ID_32,ID_43,ID_03    32,43,03