从SQL数据库中删除特定值

时间:2013-12-11 03:15:13

标签: sql sql-server ssis

您好我目前在SQL表中有此列,我想删除最后一个括号的所有值

当前列

    Column xxx
    Banana
    Apple(3yy)(Rev 1)
    Pear(5zx)(Rev 3)
    orange(9iz)(Minor 5)
    Cow(7iz)(Roaring 5)

期望栏

    Column xxx
    Banana
    Apple(3yy)
    Pear(5zx)
    orange(9iz)
    Cow(7iz)

我愿意在SSIS中编写一个包或者做一个SQL脚本来删除括号中的值。任何给出的建议都会受到重视。感谢

1 个答案:

答案 0 :(得分:8)

SQLFiddle

除非您过度简化了问题,否则无需SSIS包。您只需要更新声明。

UPDATE
    S
SET
    Column1 = CASE WHEN CHARINDEX('(', REVERSE(S.Column1)) > 0
        THEN REVERSE(RIGHT(REVERSE(S.Column1), LEN(S.Column1) - CHARINDEX('(', REVERSE(S.Column1))))
        ELSE S.Column1
    END 
FROM
    dbo.Source AS S;

我的逻辑是

  • 反转字符串以找到第一个,这是真正的最后一个括号(
  • 如果位置为0,则无法完成任何工作。
  • 否则,对于反向字符串,取字符串的最后N个字符(括号后面的所有字符)然后再将其反转以使其按顺序重新显示。