Найти и удалить значения в дБ - PullRequest
0 голосов
/ 25 февраля 2011

Как мне найти базу данных SQL Server, все записи, где столбец (имя которого я не знаю), который содержит значения «aaa» и «bbb» ??. Я бы удалил эти значения из этого столбца. Не удаляйте столбец, только значения.

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Это будет нормально для ограниченного использования ...

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 голосов
/ 25 февраля 2011

вам может понадобиться написать блок (или процедуру) 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 для достижения этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...