use*_*484 6 sql t-sql sql-server substring sql-server-2008
我有如下字母数字文本
ID Textfield
1 estimated left ventricular ejection fraction 60-65%
2 estimated left ventricular ejection fraction is 55-60%
3 Left ventricular ejection fraction is approximately 40 to 50%
4 Fractional Short 50 %( 28-48) LV mass 83 gm (<220) systolic function left ventricular ejection fraction = 52 %
Run Code Online (Sandbox Code Playgroud)
我需要提取左心室射血分数的数值
输出应该是
ID Lowerbound Upperbound
1 60 65
2 55 60
3 40 50
4 52 NULL
Run Code Online (Sandbox Code Playgroud)
我尝试了以下 sql 语法搜索字符 - 它的 ID 3 和 4 失败(对于 ID 4,它给我 50 但应该是 52)
SELECT SUBSTRING(textfield,CHARINDEX('-',
textfield)-1,10),dbo.udf_GetNumeric(RIGHT(left(textfield,CHARINDEX('-
',textfield)-1 ),10))AS Lower_bound,left(textfield, CHARINDEX('-',
textfield) )
,dbo.udf_GetNumeric(SUBSTRING(textfield,CHARINDEX('-', textfield)+1,5))
AS Upper_bound
Run Code Online (Sandbox Code Playgroud)
先感谢您
小智 0
从技术上讲,这适用于您的上限问题,至少在示例数据的范围内:
CASE WHEN RIGHT(TextField, 4) LIKE '%-[1234567890]' + '%'
THEN Left(Right(TextField,3),2)
WHEN RIGHT(TextField, 6) LIKE '%to [1234567890]%'
THEN Left(Right(TextField,3),2)
WHEN RIGHT(TextField, 6) LIKE '%= [1234567890]%'
THEN Left(Right(TextField,4),2)
END AS UpperBound
Run Code Online (Sandbox Code Playgroud)
但是,你的示例数据非常糟糕,m
归档时间: |
|
查看次数: |
80 次 |
最近记录: |