更新列-删除第一个和最后一个字符

时间:2019-08-15 20:53:59

标签: sql sql-server

我写了成功的SELECT声明,向我展示了所有用双引号括起来的公司名称,例如“ ABC Company”。我想永久删除双引号,并用清理后的版本替换公司名称。

这是我的SELECT,效果很好:

SELECT
    companyname,
    CASE
       WHEN companyname LIKE '"%"' 
          THEN SUBSTRING(companyname, 2, LEN(companyname) - 2)
       ELSE companyname
    END AS CC
FROM 
    Company_Table 
WHERE 
    companyName LIKE '"%"'

我无法将此语句转换为UPDATE。我想影响原来的companyname列。

我曾尝试在上述代码周围添加UPDATE子句,但似乎无法正确理解。

能否请我举个例子,说明如何在适当的位置删除列的第一个和最后一个字符。

否则,这是体力劳动!

我希望原始公司名称字段中没有“”。

3 个答案:

答案 0 :(得分:2)

作为更新:

UPDATE Company_Table 
SET companyname = SUBSTRING(companyname, 2, LEN(companyname)-2)
WHERE companyName like '"%"'

单表更新查询采用以下形式

UPDATE table
SET column1 = value1, column2 = value2 ...
WHERE truth_test

您可以在SET中的=左右使用相同的列名。算出所有右侧,然后将其应用到左侧,以使这些值不会互相干扰

(如果您要说SET a = a + 1,b = a + 1,那么对于a和b都开始为0的行,更新后它们都将为1。a不会递增从0到1,则b变为1 + 1。换句话说,b设置为old-a + 1而不是new-a + 1

答案 1 :(得分:0)

如果您确定在companyName值的开头和结尾处没有双引号,则可以使用REPLACE函数将其替换为空字符串。

volumeBindingMode: WaitForFirstConsumer

请注意,第二个参数是用双引号引起来的单引号。

答案 2 :(得分:0)

如果有可能出现格式错误的输入,则需要避免使用负长度参数:

CASE WHEN LEN(companyname) > 2
     THEN SUBSTRING(companyname, 2, LEN(companyname) - 2)
     ELSE '' END;