2016-05-08 11 views
0

Wie entpacke ich die Nummer nach dem Tor Infusionsrate:Des Versuch, ein Textfeld zu Teilzeichen Charindex mit

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 

Antwort

0

Solche Extraktionen ein Schmerz in SQL Server sind. Ich neige dazu, eine Reihe von outer apply s für diesen Zweck zu verwenden. Aber in Ihrem Fall alle die Positionen fixiert werden erscheinen, so würde ich vorschlagen:

select substring(summaryline, 43, 2) 

Wenn die Beispieldaten nicht genau zitieren, dann erfordert, wenn mehr Arbeit:

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; 

Das könnte dir benötigen eine zusätzliche Bedingungslogik, wenn summaryline den Wert möglicherweise nicht enthält. Außerdem wird davon ausgegangen, dass n: ausreicht, um die Position in der Zeichenfolge zu identifizieren.

+0

Es hat funktioniert, vielen Dank – user3666224

Verwandte Themen