2016-05-08 4 views
0

Как извлечь номер после цели Скорость инфузии:Попытка подстроки текстовое поле с помощью CHARINDEX

Substring(SummaryLine, CHARINDEX('n:',summaryline) , 
     LEN(SummaryLine) - CHARINDEX('n:',summaryline)-1) AS NewSumLine 

    , Initial Rate: 40, Goal Rate of Infusion: 55, to goal rate in 8 hours 
    , Initial Rate: 40, Goal Rate of Infusion: 60, to goal rate in 8 hours 
    , Initial Rate: 30, Goal Rate of Infusion: 30, to goal rate in 8 hours 
    , Initial Rate: 30, Goal Rate of Infusion: 30, to goal rate in 8 hours, Dilution: half strength 
    , Initial Rate: 30, Goal Rate of Infusion: 40, to goal rate in 8 hours 
    , Initial Rate: 30, Goal Rate of Infusion: 50, 20 ml every 4 hours to goal rate 
    , Initial Rate: 50, Goal Rate of Infusion: 50, to goal rate in 8 hours 

ответ

0

Такие извлечений являются боль в SQL Server. Для этой цели я склонен использовать серию outer apply. Тем не менее, в вашем случае, позиции все, кажется, фиксированы, поэтому я хотел бы предложить:

select substring(summaryline, 43, 2) 

Если пример данных не процитировать точным, то если требуется больше работы:

select t2.val 
from t outer apply 
    (select stuff(t.summaryline, 1, charindex('n: ', t.summaryline) + 4) as l1 
    ) t1 outer apply 
    (select left(t1.l1, charindex(',', t1.l1) - 1) as val 
    ) t2; 

Вы могли бы нужна дополнительная условная логика, если summaryline не может содержать значение. Кроме того, это предполагает, что n: является достаточным для определения местоположения в строке.

+0

Это сработало, спасибо большое – user3666224

Смежные вопросы