2012-04-27 2 views
0

저는 공급 업체 데이터베이스에 이상한 데이터가 있지만 db의 한 필드에서 여러 매개 변수를 추출 할 수 있어야합니다.문자열로 된 하위 문자열의 모든 결과를 반환합니다.

"Func_GetParameterLatestValue ("IBW :

그래서이 예에서 난 ("%") 따옴표 사이

문자열, 그것은 코드처럼 보이는 것을 무시 사이에 해당하는 모든 항목을 꺼내 싶습니다 (kSex) = ""이면
Return_Value = NULL Else If kHeight> 0 Then kSex = 1이면 Return_Value = Round (((kHeight - 환자 높이 RT 평가) ") 152.4) * .91) +50,0) Else
Return_Value = Round (((kHeight - 152.4) * .91) +45.5,0) End IF Else Return_Value = NULL End I F 끝 경우 'RETURN_VALUE = kHeight'("IBW 환자 높이 RT는 평가") "

때문에 반환 값은 다음과 같습니다 시도하고이 일을 어떤 제안을

IBW Patient Height RT Assess, 
Height For IBW Vent Misc, 
IBW Patient Height RT Assess 

임 열립니다. 이상적으로 나는 다른 테이블에 존재하는지 확인하기 위해 부질의 결과를 슬래 밍할 수 있기를 원합니다.

이 쿼리는 현재 당신이 문을 사용하여 함께 반복적으로이 작업을 수행 할 수있는 첫 번째 인스턴스를

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 
+0

(그래서 '높이 IBW 벤트 기타를 들어'사건이 될 것이다). 일부 쿼리에 대해 열 결과의 부분 문자열을 지정하는 방법을 묻는 중입니까? 위의 코드는 T-SQL처럼 보이지 않습니다. – Tejs

+0

죄송합니다, 그것은 코드처럼 보이지 않는 것을 의미합니다. 문자열 텍스트의 실제 조각 일뿐입니다 .... – cjparker

+0

저는 SQL 녀석보다 .NET 녀석입니다 ... 그래서 CLR-UDF쪽으로 기울어졌습니다. –

답변

2

를 반환합니다. 여기에 그 장면이 있습니다. FormulaDetails 열의 데이터 유형이 무엇이든간에 varchar (max)를 변경하십시오. 당신이 그것을 원하는 경우,이 쿼리는 ScriptID와 숫자를 발견 한 청크의 위치를 ​​반환 당신은이 질문을 명확히 할 필요가

with Chunks(id,occurrence,position,token,remainder) as (
    select 
    ScriptID, 
    cast(0 as int), 
    charindex(@token,FormulaDetails), 
    cast('' as varchar(max)), 
    substring(c,charindex(@token,FormulaDetails)+1,len(FormulaDetails)) 
    from StatementDefinitions 
    where FormulaDetails like '%'[email protected]+'%' 
    union all 
    select 
    id, 
    occurrence+1, 
    charindex(@token,remainder)+position, 
    cast(substring(remainder,1,charindex(@token,remainder)-1) as varchar(max)), 
    substring(remainder,charindex(@token,remainder)+1,len(remainder)) 
    from Chunks 
    where remainder like '%'[email protected]+'%' 
) 
    select id, occurrence, token from Chunks 
    where occurrence > 0 
    order by id; 
+0

이봐, 스티브, 고마워. 첫 번째 하위 문자열에서 'C'는 무엇입니까? – cjparker

+0

죄송합니다. C는 FormulaDetails 여야합니다. 전 꽤 확신합니다. –

+0

그게 무슨 생각하지만 메신저 0 결과를 얻는 인스턴트 메신저 : ( – cjparker

관련 문제