在db中查找和删除值

时间:2011-02-25 07:52:01

标签: sql sql-server-2008

如何查找SQL Server数据库,包含值'aaa'和'bbb'的列(我不知道名称)的所有记录。我会从此列中删除这些值。不要仅删除列,值。

2 个答案:

答案 0 :(得分:1)

这可以限制使用......

SELECT 'Starting'
WHILE @@ROWCOUNT <> 0
    UPDATE MyTable
    SET
       myValue1 = CASE
                    WHEN @columname = 'myValue1'
                    THEN REPLACE(REPLACE(myValue1, 'bbb', ''), 'aaa', '')
                    ELSE myValue1 
                  END,
       myValue2 = CASE
                    WHEN @columname = 'myValue2'
                    THEN REPLACE(REPLACE(myValue2, 'bbb', ''), 'aaa', '')
                    ELSE myValue2 
                  END,
       myValue3 = CASE
                    WHEN @columname = 'myValue3'
                    THEN REPLACE(REPLACE(myValue3, 'bbb', ''), 'aaa', '')
                    ELSE myValue3 
                  END,
       ...

答案 1 :(得分:0)

您可能需要编写一个T-SQL块(或过程),该块接受列参数作为varchar,并创建一个动态更新(或删除)SQL语句,您需要通过sp_executesql来执行此操作。

sp_executesql('Update MyTable Set ' + @Your_column + ' = <the logic goes here>');

作为替代方案,您可以查询元数据并获取游标中所述表的所有列,然后您可以遍历游标并执行上述语句以清理表。

Select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS Where TABLE_NAME='MyTable';

在上述任何一种情况下,您都必须使用T-SQL块来实现此目标。