2016-11-03 8 views
1

Я импортирую в файл txt SSMS 2016 (с разделителями-запятыми, «текстовый классификатор), но в тексте есть много« которые просто вызывают беспорядок.Столбец обрезки TSQL/таблица

Итак, я импортировал это только в виде запятой, без ошибок все выглядит хорошо. Column (s) выглядят как например:

"Ab-123-2  " 
"wheel 17" " 
"hello "world"  " 

Использование тех приберёмся:

UPDATE table1 
SET [Column 1] = STUFF([Column 1], 1, 1, '') 
WHERE [Column 1] LIKE '"%' 

UPDATE table1 
SET [Column 1] = REVERSE(STUFF(REVERSE([Column 11]), 1, 1, '')) 
WHERE [Column 1] LIKE '%"' 

Это, кажется, работает хорошо. Удаление первым и последним "в каждой строке в колонке 1

Мой вопрос, в этой таблице у меня есть около 40 столбцов, это способ запустить это против всей таблицы (все столбцы 1-40)?

Я мог бы сделать это вручную, меняясь везде [Столбец 1] на [Столбец 2], [столбец 3] и т. Д., Но занимает много времени, и мне нужно повторить это несколько раз в будущем.

Но было бы здорово знать как сделать все это одним ударом.

Thanks

+1

динамического SQL, где цикл по именам столбцов, выбранных из схему таблицы, составьте последовательность операторов UPDATE для строки, затем запустите с помощью команды 'EXECUTE' – dlatikay

+0

. Или, что сказал @dlatikay, или используйте схему таблицы для генерации скрипта 40+ операторов обновления. –

+0

Спасибо за освещение быстрых ответов :) Я все еще новичок в TSQL, и этот скрипт, что я написал, является «ремейком» того, что я нашел здесь. Не знаете, что вы имеете в виду под этим, как писать, но глядя, googling для этого сейчас – hyprex

ответ

0

Afte г вы тянете данные в таблицу можно использовать этот

UPDATE Table1 
SET Column1 = RTRIM(LTRIM(REPLACE(Column1,'"',''))), 
    Column2 = RTRIM(LTRIM(REPLACE(Column2,'"',''))), 
    ..., 
    ColumnN - RTRIM(LTRIM(REPLACE(ColumnN,'"',''))) 
WHERE... 

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

+0

Как это удалить кавычки ('' ')? – HABO

+0

@HABO Я отредактировал его, чтобы избавиться от цитаты –

0

Вы можете использовать динамический SQL, чтобы создать свое UPDATE запросы, как следующее:

В этом примере я предположил, что название Таблицы является compute_node

 DECLARE @QUERY as VARCHAR(MAX) 
     DECLARE @TABLENAME AS VARCHAR(50) 

     SET @TABLENAME = 'compute_node' 
     SET @QUERY = 'UPDATE [' + @TABLENAME + '] SET ' 

     SELECT @QUERY = @QUERY + '[' + COLUMN_NAME + '] = LTRIM(RTRIM(REPLACE([' + COLUMN_NAME + '],''"'',''''))) ,' 
     FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TABLENAME 

     SELECT @QUERY = SUBSTRING(@QUERY, 1 , LEN(@QUERY) - 1) 

     EXEC (@QUERY)