2013-03-20 213 views
0

我試圖使用PATINDEX功能在SQL Server 2008 R2從字符串PATINDEX在SQL Server 2008 R2

Charged Hourly Fee for 3 CR for BCP202DL Personal Development II 

提取值3,但我似乎犯了一個錯誤。

我試圖

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

返回位置24但我想要的值3

有人可以幫助解決這個問題嗎?

+0

請問你可以發表你自己的看法嗎?指出你的錯誤會更容易。 – 2013-03-20 12:20:18

+0

請添加預期的輸出。 – TechDo 2013-03-20 12:29:51

+0

我試過了「選擇PatIndex('%[0-9]%','BCP202DL Personal Development II 3 CR的計費小時費用')」,它返回24,但我想要3的值? – 2013-03-20 12:31:29

回答

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 
+0

謝謝。有用。 – 2013-03-20 12:55:01

+0

不客氣:) – TechDo 2013-03-20 12:56:35

0

如果必須使用PATINDEX函數和你的項目的描述永遠不會包含其他號碼,如「3」,您可以使用以下方法:

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

這將返回24.

我懷疑您正在查看訂購數量始終處於相同位置的字符串。在這種情況下,我會使用子字符串函數。

+1

謝謝。但是,如你所提到的那樣,這將返回位置24,但我想提取值「3」。該值並不總是「3」,但總是出現在該位置。我怎樣才能做到這一點?也許我不需要使用patindex? – 2013-03-20 12:30:01

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) 

這將返回字符串中的第一個數字。

你的做法是返回第一個數字的位置,我的代碼將在該位置返回值。