存在一个表,分别记录,对象ID、对象描述。
对象描述中存在部分语句是描述身高的,现在根据指定的身高区间找到对应的对象描述,从而返回对应的对象ID。例如
现在需要所有涉及到描述身高的且身高在150~170这个区间内的ID有哪几个。
难点在于,身高的描述可能是标准的“身高150以上”,也可能是“152以上”,甚至可能是“1.67”以上或者“身高1.56”
辛苦给个思路,或者给个例子
正则表达式提取字符串中的数字,根据数字判断把 这样也可能不太准... 这个有点麻了
说下大概思路
1、创建一个数据库方法,用来提取当前字段的数字,其提示方法的实现思路是依次判断每个字符的ASCII码是否在[0,9]中,提取该部分内容
Create Function USF_ExtractNumeric
(
@inputStr nvarchar(50)
)
Returns nvarchar(50)
AS
Begin
Declare @outputStr nvarchar(50)
Set @outputStr = ''
If ISNUMERIC(@inputStr) = 1
Begin
Return @inputStr
End
Declare @I Int
Set @I = 1
While @I <= Len(@inputStr)
Begin
If ASCII(SUBSTRING(@inputStr,@I,1)) <= 57 and ASCII(SUBSTRING(@inputStr,@I,1)) >= 48
Begin
Set @outputStr = @outputStr + SUBSTRING(@inputStr,@I,1)
End
Set @I = @I + 1
End
Return @outputStr
End
其结果是这样
2、得到的结果,在进行查询
SELECT * FROM (SELECT id,CAST(INT AS dbo.USF_ExtractNumeric(desc)) AS d from 表名) AS T WHERE T.d >150 AND T.d<170