#sql #sql-server #tsql #sql-server-2012
Вопрос:
Я пытаюсь преобразовать таблицу столбцов в BIGINT, но сначала мне нужно удалить все ненужные данные
Это означает, что я должен удалить все нечисловые данные в этом столбце и заменить их нулем, чтобы я мог обновить тип таблицы
Как я могу добиться этого в SQL Server?
Спасибо!
Пример:
CREATE TABLE SampleData
(
Col1 VARCHAR(100)
)
-- I want to remove this kind of data
INSERT INTO SampleData
VALUES('<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">2007220737724</font></')
-- I want to keep this kind of data
INSERT INTO SampleData
VALUES('2007220737724')
Комментарии:
1. Можете ли вы предоставить примерные данные и желаемые результаты?
2. Изменить: Добавлены некоторые примеры данных
3. Но что вы пробовали?
Ответ №1:
Это кажется достаточно простым, вы можете просто использовать try_cast
и заменять все недействительные данные '0'
update t
set col1='0'
where try_cast(col1 as bigint) is null
Ответ №2:
Похоже, что ваши данные являются почти допустимым XML, просто отсутствует правильный закрывающий тег.
Предполагая, что это действительно так, вы могли бы использовать XQuery
SELECT CAST(Col1 AS xml).value('(font/font/text())[1]','bigint')
FROM SampleData