如何用 0 替换 varchar 列中的所有非数字值
How to replace all non-numeric values in a varchar Column with a 0
我正在尝试将列 table 转换为 BIGINT,但首先我需要删除所有垃圾数据
这意味着,我必须删除此列中的所有非数字数据并将其替换为零,以便我可以更新 table 类型
如何在 SQL 服务器中实现这一点?
谢谢!
示例:
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
我正在尝试将列 table 转换为 BIGINT,但首先我需要删除所有垃圾数据
这意味着,我必须删除此列中的所有非数字数据并将其替换为零,以便我可以更新 table 类型
如何在 SQL 服务器中实现这一点?
谢谢!
示例:
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