T-SQL选择查询以删除非数字字符

T-SQL选择查询以删除非数字字符

我在具有可变alpha长度的列中有脏数据。我只想删除任何不是0-9的东西。

我不想运行函数或proc。我有一个类似于在文本之后抓取数值的脚本,它看起来像这样:

Update TableNameset ColumntoUpdate=cast(replace(Columnofdirtydata,'Alpha #','') as int)where Columnofdirtydata like 'Alpha #%'And ColumntoUpdate is Null

我认为它会工作得很好,直到我发现我认为只有Alpha#12345789格式的某些数据字段不...

需要剥离的数据示例

AB ABCDE # 123ABCDE# 123AB: ABC# 123

我只想要123.确实所有数据字段都具有#之前的数字。

我尝试了substring和PatIndex,但我的语法不正确或者其他东西。任何人对解决这个问题的最佳方法有任何建议吗?

谢谢!


米脂
浏览 578回答 3
3回答

繁星点点滴滴

请参阅此博客文章,了解从SQL Server中的字符串中提取数字。下面是您的示例中使用字符串的示例:DECLARE @textval NVARCHAR(30)SET @textval = 'AB ABCDE # 123'SELECT LEFT(SUBSTRING(@textval, PATINDEX('%[0-9.-]%', @textval), 8000),            PATINDEX('%[^0-9.-]%', SUBSTRING(@textval, PATINDEX('%[0-9.-]%', @textval), 8000) + 'X') -1)
打开App,查看更多内容
随时随地看视频慕课网APP