GLOBAL UpPer CaSe TSQL - PullRequest
       1

GLOBAL UpPer CaSe TSQL

0 голосов
/ 04 апреля 2011

Могу ли я глобально преобразовать весь текст в базах данных в верхний регистр. Это только тестовые данные, но многие из них 20 000 000 строк 145 столбцов, которые ('char', 'nchar', 'varchar', 'nvarchar')

У кого-нибудь есть идеи, как это сделать ...? Я знаю, что вы можете использовать UPPER

Update table
set col1 = UPPER(col1)

Но это ограничивает его отдельным столбцом Но как мне создать курсор, используя представления информационной схемы, и просмотреть все столбцы типов символов, чтобы определить, какие из них обновить:

select table_name, column_name from information_schema.columns
where data_type in ('char', 'nchar', 'varchar', 'nvarchar')

У меня нет таблиц в таблицах Спасибо

1 Ответ

3 голосов
/ 04 апреля 2011

, если это хакерский раз, просто заставьте запрос выдать какой-нибудь копируемый / вставляемый SQL;

SELECT 'update [' + p1.table_name + '] set ' +
(SELECT 
    CASE WHEN ROW_NUMBER() OVER (order by column_name) > 1 THEN ',' ELSE '' END
    + '[' + column_name + ']=upper([' + column_name + '])'
    FROM information_schema.columns p2 
    WHERE p2.table_name = p1.table_name and p2.data_type in ('char', 'nchar', 'varchar', 'nvarchar')
    ORDER BY table_name
    FOR XML PATH('')
) AS blah
FROM information_schema.columns p1
    WHERE p1.data_type in ('char', 'nchar', 'varchar', 'nvarchar')
GROUP BY table_name;

, который выплюнет;

update [Tbl] set [F1]=upper([F1]),[F2]=upper([F2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...