I have some odd data in a vendor database but need to be able to extract multiple different parameters from one field in the db.
So from this example i would like to pull out all items that fall between (” % “)
Between quotes is a string, disregard that it looks like code:
“Func_GetParameterLatestValue(“IBW Patient Height RT Assess”) kHeight =Func_GetParameterLatestValue(“Height For IBW Vent Misc”) If (kSex) = “” Then
Return_Value =NULL Else If kHeight > 0 Then If kSex=1 Then Return_Value= Round(((kHeight – 152.4)*.91)+50,0) Else
Return_Value= Round(((kHeight – 152.4)*.91)+45.5,0) End IF Else Return_Value = NULL End IF End IF ‘ Return_Value = kHeight ‘(“IBW Patient Height RT Assess”)”
so the return values would be:
IBW Patient Height RT Assess,
Height For IBW Vent Misc,
IBW Patient Height RT Assess
Im open to any suggestions to try and make this work. Ideally i would like to be able to slam the results in a subquery as well to make sure that they exist on another table.
This query currently returns the first instance
select vbs.Name,
SUBSTRING(sd.FormulaDetails,
CHARINDEX('("', sd.FormulaDetails)+2,(CHARINDEX('")',sd.FormulaDetails) - CHARINDEX('("', sd.FormulaDetails))-2)
from StatementDefinitions sd, MvVBScript vbs
where sd.ScriptID = vbs.ID
You can do this recursively with a WITH statement. Here’s a shot at it. Change varchar(max) to whatever the data type of your FormulaDetails column is. In case you want it, this query returns the ScriptID and numbers the position of the chunk it finds (so ‘Height For IBW Vent Misc’ would be occurrence 2)