如何将varchar列中的所有非数值替换为0



我正在尝试将列表转换为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')

这看起来很简单,您可以使用try_cast并用'0'替换所有无效数据

update t
set col1='0'
where try_cast(col1 as bigint) is null

看起来您的数据几乎是有效的XML,只是缺少一个适当的结束标记。

假设它是有效的,可以使用XQuery

SELECT CAST(Col1 AS xml).value('(font/font/text())[1]','bigint')
FROM SampleData

,db&lt的在小提琴

最新更新