sql-server - 只获取列数据的数字部分?

标签 sql-server t-sql numbers charindex

我的数据库中有一个列包含数字和字母数字字符。 我只想从列中获取数字(6 个数字)。

数据示例:

TEST_123456_Prod
DB111111P
F222222FN
PROD999999_SCF

我想创建一个选择语句,返回该列中的所有行,其中除数字外的所有行都被过滤掉。

我正在使用 SQL Server,因此可能需要使用 Charindex,但不知道如何使用。

最佳答案

要去掉所有字母数字字符,您可以创建一个函数:

CREATE FUNCTION [dbo].[RemoveAlphaCharacters](@InputString VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
  WHILE PATINDEX('%[^0-9]%',@InputString)>0
        SET @InputString = STUFF(@InputString,PATINDEX('%[^0-9]%',@InputString),1,'')     
  RETURN @InputString
END

GO

然后用它来获得所需的结果:

select dbo.RemoveAlphaCharacters(databasename)
from T1;

SQL Fiddle

关于sql-server - 只获取列数据的数字部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22987049/

相关文章:

c# - SQL Server/ASP.NET MVC 4 中 PK int 的大小

sql - 如何在 SQL Server 中显示获取参数值的对话框?

sql-server - 缺口和岛屿?或不?

ios - 在 iOS 中验证数字输入的最佳方式?

sql-server - 恢复 SQL 备份失败 - 访问被拒绝

SQL Server Order By isnull 意外结果

c - 线程和并行编程

objective-c - 计算 NSString 中任意重复十进制数的数量

sql-server - 在 sql 函数中使用设置语言

t-sql - 使用子查询结果作为查询变量