2013-03-20 3 views
0

Я пытаюсь использовать функцию PATINDEX в SQL Server 2008 R2 для извлечения значения 3 из строкиPATINDEX в SQL Server 2008 R2

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.

Может ли кто-нибудь помочь с решением?

+0

Не могли бы вы опубликовать собственное решение проблемы? Было бы проще указать на вашу ошибку. –

+0

Пожалуйста, добавьте ожидаемый результат. – TechDo

+0

Я попробовал «SELECT PatIndex («% [0-9]% »,« Заплаченный почасовой сбор за 3 CR за BCP202DL Personal Development II »), который возвращает 24, но мне нужно значение 3? –

ответ

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

Спасибо. Оно работает. –

+0

Добро пожаловать :) – TechDo

0

Если необходимо использовать функцию PATINDEX и описание вашего товара никогда не будет содержать другое число, например, «3» вы можете использовать следующее:

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

Это вернет 24.

Я подозреваю, что вы смотрите на строку, где заказанное количество всегда находится в одном положении. В этом случае я бы использовал функцию подстроки.

+1

Спасибо. Однако это возвращает позицию 24, как вы упомянули, но я хочу извлечь значение «3». Значение не всегда «3», но оно всегда появляется в этом положении. Как я могу это достичь? Может быть, мне не нужно использовать patindex? –

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) 

это вернет первую цифру в строке.

То, как вы делали, это возвращение позиции первой цифры, и мой код вернет значение в этой позиции.