2016-05-08 116 views
0

我需要把 「輸液的進球率:###」 到它自己的領域SUBSTRING和CHARINDEX

我想這個代碼子串(SummaryLine,CHARINDEX( '晶鑽漾:',summaryline),+ 14 )但它不起作用。

, Initial Rate: 40, Goal Rate of Infusion: 0, to goal rate in 8 hours 
, Initial Rate: 30, Goal Rate of Infusion: 0, to goal rate in 8 hours 
, Initial Rate: 10, Goal Rate of Infusion: 10, to goal rate in 8 hours, HOLD FOR N/V 
, Initial Rate: 40, Goal Rate of Infusion: 10, to goal rate in 8 hours 
, Initial Rate: 40, Goal Rate of Infusion: 10, to goal rate in 8 hours 
, Initial Rate: 100, Goal Rate of Infusion: 100, to goal rate in 8 hours 
, Initial Rate: 15, Goal Rate of Infusion: 15, to goal rate in 8 hours 
, Initial Rate: 40, Goal Rate of Infusion: 15, to goal rate in 8 hours 
+0

顯示你當前的代碼,所以我們可以爲您解決問題。 –

+0

「它不工作」不是一個足夠的問題描述。 – Dai

+0

SUBSTRING(SummaryLine,CHARINDEX( '輸液:',summaryline),+ 14)AS NewSummaryField輸液:50, 輸液:55, 輸液:65, 輸液:40, 輸液:70, 輸液:50, 輸液:50, 輸液:40, – user3666224

回答

0
SELECT 
    SummaryLine, 
    StartIdx, 
    EndIdx, 
    CONVERT(
     int, 
     SUBSTRING(SummaryLine, StartIdx, EndIdx - StartIdx) 
    ) AS InfusionRate 
FROM (
    SELECT 
     SummaryLine, 
     StartIdx, 
     CHARINDEX(',', summaryLine, StartIdx) AS EndIdx 
    FROM (
     SELECT 
      SummaryLine, 
      CHARINDEX('Infusion:', SummaryLine) + 10 AS StartIdx, 
     FROM 
      SourceTable 
    ) 
) 

或者爲單行:

SELECT 
    CONVERT(
     int, 
     SUBSTRING(
      SummaryLine, 
      CHARINDEX('Infusion:', summaryLine) + 10, 
      CHARINDEX(
       ',', 
       SummaryLine, 
       CHARINDEX('Infusion:', summaryLine) + 10 
      ) 
     ) 
    ) 
FROM 
    SourceTable 

SQL不允許你在一個SELECT語句緩存或別名表達的結果,遺憾的是 - 你需要可以使用子查詢(第一個例子)或者重複表達式(第二個例子)。

更新:我做了一些研究,你可以使用CROSS APPLY計算StartIdx只有一次:

SELECT 
    SummaryLine, 
    CONVERT(
     int, 
     SUBSTRING(
      SummaryLine, 
      StartIdx, 
      CHARINDEX(',', summaryLine, StartIdx) - StartIdx 
     ) 
    ) AS InfusionRate 
FROM 
    SourceTable 
    CROSS APPLY (
     SELECT CHARINDEX('Infusion:', summaryLine) + 10 AS StartIdx 
    ) 
+0

我能夠得到 – user3666224