我的数据库中有一个包含数字和字母数字字符的列。我只想从列中获取数字(6 个数字)。
数据示例:
TEST_123456_Prod
DB111111P
F222222FN
PROD999999_SCF
我想创建一个选择语句,该语句返回该列中的所有行,其中除数字外的所有行都被过滤掉。
我正在使用 SQL Server,所以可能需要使用 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;
这将适用于您的所有示例:
SELECT
SUBSTRING(databasename,
PATINDEX('%[0-9]%', databasename),
LEN(databasename) - (PATINDEX('%[0-9]%', REVERSE(databasename)) + PATINDEX('%[0-9]%', databasename)) + 2)
FROM dbs
这是一个关于代码如何工作的SQLFiddle。