SQL Server 2008 R2中的Patindex

时间:2013-03-20 12:09:09

标签: sql sql-server-2008 patindex

我正在尝试使用SQL Server 2008 R2中的PATINDEX函数从字符串中提取值3

Charged Hourly Fee for 3 CR for BCP202DL Personal Development II

但我似乎犯了一个错误。

我试过

SELECT PatIndex('%[0-9]%', 'Charged Hourly Fee for 3 CR for BCP202DL Personal Development II')

返回位置24但我想要值3

有人可以协助解决方案吗?

3 个答案:

答案 0 :(得分:2)

请尝试:

Select substring(Data, PatIndex('%[0-9]%', Data), 1)
from(
    select 'Charged Hourly Fee for 3 CR for BCP202DL Personal Development II' as Data
)x

答案 1 :(得分:0)

如果您必须使用patindex功能,并且您的项目说明将永远不会包含其他数字,例如“3”,您可以使用以下内容:

select patindex('%3%', 'Charged Hourly Fee for 3 CR for BCP202DL Personal Development II')

这将返回24。

我怀疑您正在查看订购数量始终位于相同位置的字符串。在这种情况下,我会使用substring函数。

答案 2 :(得分:0)

declare @str nvarchar (max)
set @str='Charged Hourly Fee for 3 CR for BCP202DL Personal Development II'
Select substring(@str, PatIndex('%[0-9]%', @str), 1)

这将返回字符串中的第一个数字。

你正在做的是返回第一个数字的位置,我的代码将返回该位置的值。