2016-08-29 2 views
1

У меня есть таблица, содержащая только столбцы varchar. Каждое поле имеет один и тот же шаблон «xxxxx», и я хотел бы очистить/обрезать ведущий и конечный »из каждого отдельного поля.Как применить функцию ко всем полям (все столбцы всех строк)

Я знаю, как это сделать для одного столбца, но я хотел бы сделать это для всех столбцов в динамической манере (с динамическим набором имени столбца)

Благодарности

+0

Использование sys.colum ns для создания вашего sql для вас. –

+0

@SeanLange: не могли бы вы дать мне рабочий пример, поскольку я начинаю SQL dev – Dave

+0

Вы хотите обрезать только имена столбцов или данные? – p2k

ответ

0

Вот один из способов вы можете сделать это. это не будет требовать некоторые динамические SQL независимо от того, вы отрезаете это потому, что вы должны динамически получать имена столбцов.

declare @SQL nvarchar(max) 

select @SQL = 'Update YourTable set ' + STUFF((select ', replace(' + QUOTENAME(c2.name) + ', ''"'', '''')' 
    from sys.columns c2 
    where object_id = object_id('YourTable') 
    order by c2.column_id 
    for xml path('')), 1, 1, '')  
from sys.columns 
where object_id = object_id('YourTable') 
group by object_id 

select @SQL 
--exec sp_executesql @SQL --You can uncomment this when you comfortable with the output 
+0

выглядит интересно, но когда я пытаюсь запустить его он не со следующей ошибкой:. Msg 102, Level 15, состояние 1, строка 1 Неправильный синтаксис около «(» – Dave

+0

это происходит, когда я раскомментировать последнюю строку – Dave

+0

Так вы выяснили, есть ли еще проблема? –

Смежные вопросы