在SQL Server中更改列数据

时间:2016-08-11 04:29:06

标签: sql sql-server sql-server-2012

我正在寻找一种方法来从现有查询列中为多重字符串更改/创建新列。

我的原始专栏如下:

    parttype_name
    ---------------
    MY 4KXDVV F H
    MY 4KXDVV F H
    MY 4KXDVV F H
    MY 4KXDVV F H
    A4 4BXDCV C X
    A4 4BXDCV C X
    A4 4BXDCV C X
    A4 4BXDCV C X
    A4 4BXDCV C X

我要求的是在一个字符串中找到一种简单的方法(如果可能的话)来为下一个数据更新/创建新列:(如果列数据为'MY 4KXDVV FH',则将其更新为H5,如果'A4 4BXDCV CX'然后将其更新为X3 ...所以拥有所有列字符串。

谢谢,

3 个答案:

答案 0 :(得分:0)

您可以尝试替换这样的功能:

select parttype_name,
       replace(parttype_name,'MY','H5') as edited_parttype_name 
from MyTable

修改 您可以嵌入要替换的调用,如下所示:

select parttype_name,
       replace(
       replace(
       replace(parttype_name,
       'MY','H5'),
       'YY','H4'),
       'ZZ','H3')
       as edited_parttype_name 
from MyTable

请注意左右括号

答案 1 :(得分:0)

您可能想要CASE STATEMENT

SELECT
    parttype_name,
    CASE parttype_name 
        WHEN 'MY 4KXDVV F H' THEN 'H5'
        WHEN 'A4 4BXDCV C X' THEN 'X3'
        --WHEN '' THEN ''
    END
FROM
    your_table;

答案 2 :(得分:0)

如果你有更多不,我会建议。然后记录获得不同的值(parttype_name),然后使用while循环或使光标更新具有特定值的所有值,如示例H5和H4中所示。

UPDATE TableName
SET parttype_name = REPLACE(parttype_name, @variablename, @updatevalue) 

这里,@ variablename和@updatevalue是变量,你可以使用一些逻辑来动态地改变@updatevalue的值。

如果您需要更多帮助,请与我们联系。