MS-SQL - 提取字符串的数字部分

时间:2014-03-26 11:13:03

标签: sql sql-server


我有一个MS-SQL表,标题为' ImportCount' 此列中的数据遵循以下格式:

ImportCount
[Schedules] 1376 schedule items imported from location H:\FOLDERA\AA\XX...
[Schedules] 10201 schedule items imported from location H:\FOLDERZZ\PERS\YY...
[Schedules] 999 schedule items imported from location R:\PERS\FOLDERA\AA\XX...
[Schedules] 21 schedule items imported from location H:\FOLDERA\MM\2014ZZ...


我想要做的是提取数据的数字部分(长度不同),但我正在努力获得正确的结果。非常感谢任何帮助! 感谢。

4 个答案:

答案 0 :(得分:1)

尝试

select left(ImportCount, patindex('%[^0-9]%', ImportCount+'.') - 1)

答案 1 :(得分:0)

select SUBSTRING(ImportCount,13,patindex('% schedule items%',ImportCount)-13) from table name

答案 2 :(得分:0)

试试这个..你也可以将它声明为SQL函数。

DECLARE @intText INT
DECLARE @textAplhaNumeric varchar(100)

set @textAplhaNumeric = '1376 schedule items imported from location'
SET @intText = PATINDEX('%[^0-9]%', @textAplhaNumeric)

BEGIN
WHILE @intText > 0
BEGIN
SET @textAplhaNumeric = STUFF(@textAplhaNumeric, @intText, 1, '' )
SET @intText = PATINDEX('%[^0-9]%', @textAplhaNumeric)
END
END

Select @textAplhaNumeric //output is 1376

如果是NULL或空值,它将起作用。

答案 3 :(得分:0)

请尝试:

SELECT LEFT(Val,PATINDEX('%[^0-9]%', Val+'a')-1) from(
    SELECT
       STUFF(ImportCount, 1, PATINDEX('%[0-9]%', ImportCount)-1, '') Val
    FROM YourTable
)x