2011-02-25 77 views
0

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

回答

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, 
     ... 
0

您可能需要写一个接受列参数为VARCHAR,并创建一个动态更新一个T-SQL块(或程序)(或删除)您需要通过sp_executesql进行exuec的SQL语句。

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

作为替代,您可以查询元数据和获得光标说表的所有列,那么你可以遍历光标和exuecte上述声明收拾桌子。

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

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