如何使用Substring从字符串中提取可变长度的数字?

时间:2011-05-18 16:06:19

标签: sql sql-server

我需要从字符串列中提取数字。字符串值中的数字长度不固定,但以特殊符号下划线(_)结束。我尝试使用Substring但不成功。请在下面的示例数据中提示列

示例字符串:

FilePath
1002001_Inv_QCR.tiff
100101_Inv_MAN.Jpg



SELECT SUBSTRING(Filepath,1,6)  from Tblfileinfo

2 个答案:

答案 0 :(得分:4)

我猜,以下内容可能有所帮助:

SELECT
    SUBSTRING(Filepath, 1, CHARINDEX('_', Filepath) - 1)
FROM
   Tblfileinfo

答案 1 :(得分:1)

DECLARE @Value NVarChar(255)
SET @Value = 'Something_1002001_Inv_QCR.tiff'
SELECT SubString(@Value, PatIndex('%[0-9]%', @Value), CharIndex('_', @Value, PatIndex('%[0-9]%', @Value)) - PatIndex('%[0-9]%', @Value))

(注意:这也可以处理数字不在名称开头的情况)

特定于提供的表格:

SELECT SubString(Filepath, PatIndex('%[0-9]%', Filepath), CharIndex('_', Filepath, PatIndex('%[0-9]%', Filepath)) - PatIndex('%[0-9]%', Filepath))
FROM Tblfileinfo