2011-02-25 46 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塊來實現此目標。