sql - 如何在 MS sql server 上的列中查找和删除字母

标签 sql sql-server

我有一列字母数字 ID,我们称之为 [IDS]。

ID 只能是数字,但其中一些包含杂散字符。

例如:

[IDS]

 - 012345A
 - 23456789AF
 - 789789

我只想将它们转换为数字 - 所以输出将是:

[IDS]
012345
23456789
789789

我想编写一些代码来在列中搜索字母表 (A-Z) 中的所有字母并删除它们,以便提取数值。

我知道我可以进行替换(替换(替换(....等),但对于字母表中的所有 26 个字母,这并不理想。

我现在尝试使用“声明@”来解决它,但这些似乎是为特定字符串设计的,我希望搜索和替换整个列。

使用 Microsoft SQL Server。

谢谢

最佳答案

CREATE TABLE #Table11
    ([IDS] varchar(10))
;

INSERT INTO #Table11
    ([IDS])
VALUES
    ('012345A'),
    ('23456789AF'),
    ('789789')
;


SELECT SUBSTRING([IDS], PATINDEX('%[0-9]%', [IDS]), PATINDEX('%[0-9][^0-9]%', [IDS] + 't') - PATINDEX('%[0-9]%', 
                    [IDS]) + 1) AS IDS
FROM #Table11

输出

IDS
012345
23456789
789789

关于sql - 如何在 MS sql server 上的列中查找和删除字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274318/

相关文章:

SQL Server 与 NULL 比较

c# - 在 WebMatrix 中由 C# 生成选择查询后,在带有空格的列上使用 row.ColumnName

mysql - 多个 MySQL DATETIME 列

sql - 如何通过查询找到每个客户最喜欢的类别

mysql - SQL用户表设计问题

SQL 查询开始日期和结束日期的混淆

c# - 将(大型)XML 文件转换为关系 SQL

如果日期介于(有点静态日期)条件之间,则 SQL 添加新时间戳

c# - 如何在Azure SQL中记录UTC时间?

c# - 通过传递逗号分隔值删除记录 SQL Server 和 C#