请教SQL语句 字段A是一段文字,内容如:“ksljfl sdfkjka kjf 海拔1000-3000 sdfsd dsfkj”现在的问题是:查询包含海拔2500的数据,请问SQL语句怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select * from t where A like '%海拔2500%' 字段A是一段文字,内容如:“ksljfl sdfkjka kjf 海拔1000-3000 sdfsd dsfkj”现在的问题是:查询包含海拔2500的数据,请问SQL语句怎么写?select * from tb where cast(substring(@s , charindex('海拔' , @s) + 2 , charindex('-',@s , charindex('海拔' , @s)) - charindex('海拔' , @s) - 2 ) as int) <= 1500 and cast(substring(@s , charindex('-',@s , charindex('海拔' , @s)) + 1 , charindex(' ' , @s , charindex('-',@s , charindex('海拔' , @s))) - charindex('-',@s , charindex('海拔' , @s)) - 1) as int) >=1500 字段A是一段文字,内容如:“ksljfl sdfkjka kjf 海拔1000-3000 sdfsd dsfkj”现在的问题是:查询包含海拔2500的数据,请问SQL语句怎么写?查询包含海拔2500的数据估计是查海拔1000-3000 (a到b)之间的数据也就是说 a <= 2500 <= b 我看明白了,但是运行时错,说substring的lenth参数有问题。 我看明白了,但是运行时错,说substring的lenth参数有问题。是我错了,把@s改为字段名,同时确保记录中有 海拔,-,' '. select * from tb where charindex('海拔' , col) > 0 and charindex('-',col) > charindex('海拔' , col) and charindex(' ' , col) > 0 and cast(substring(col , charindex('海拔' , col) + 2 , charindex('-',col , charindex('海拔' , col)) - charindex('海拔' , col) - 2 ) as int) <= 1500 and cast(substring(col , charindex('-',col , charindex('海拔' , col)) + 1 , charindex(' ' , col , charindex('-',col , charindex('海拔' , col))) - charindex('-',col , charindex('海拔' , col)) - 1) as int) >=1500 ksljfl sdfkjka kjf 海拔1000-3000 sdfsd dsfkj------------海拔数值范围后面都跟个空格,这种格式好办,就怕你的格式不统一。所以想得到正确的结果,不同的格式要分开来处理,我们没有实际数据,是很难调到合理的代码。给楼主提供个思路,地球上还没有超过4位数的海拔,如果数值范围后面不跟空格,就取4位是数值出来,如上面的3000。 如果先取出1000-3000,然后用split是否可以? bob59(bis) ( ) 信誉:99 非常感谢各位。数据是不够规范,要是3位如900就不好办了。没有关系的.只要你的数据格式是: '海拔aaaa-bbbb '就行. 两个表连接更新 克隆一个表? Sql 字符串拆分 联表查询 如何查看sqlserver服务器当前有多少个活动连接呀?也就是说占用服务器资源的连接.我想测试我的客户端程序是否及时关闭了连接. 一级与二级显示的问题 求一剔除相对重复纪录的SQL语句,在线等!!! 请给一个全文检索的例子 查询语句分组统计 这个SQL查询该咋写?谢谢了!!!好象无法编写出简明的SQL结构 存储过程问题!急! 求SQL语句谢谢!!
现在的问题是:查询包含海拔2500的数据,请问SQL语句怎么写?select * from tb
where cast(substring(@s , charindex('海拔' , @s) + 2 , charindex('-',@s , charindex('海拔' , @s)) - charindex('海拔' , @s) - 2 ) as int) <= 1500 and
cast(substring(@s , charindex('-',@s , charindex('海拔' , @s)) + 1 , charindex(' ' , @s , charindex('-',@s , charindex('海拔' , @s))) - charindex('-',@s , charindex('海拔' , @s)) - 1) as int) >=1500
现在的问题是:查询包含海拔2500的数据,请问SQL语句怎么写?查询包含海拔2500的数据估计是查海拔1000-3000 (a到b)之间的数据
也就是说 a <= 2500 <= b
select * from tb
where charindex('海拔' , col) > 0 and charindex('-',col) > charindex('海拔' , col) and charindex(' ' , col) > 0 and
cast(substring(col , charindex('海拔' , col) + 2 , charindex('-',col , charindex('海拔' , col)) - charindex('海拔' , col) - 2 ) as int) <= 1500 and
cast(substring(col , charindex('-',col , charindex('海拔' , col)) + 1 , charindex(' ' , col , charindex('-',col , charindex('海拔' , col))) - charindex('-',col , charindex('海拔' , col)) - 1) as int) >=1500
------------
海拔数值范围后面都跟个空格,这种格式好办,就怕你的格式不统一。
所以想得到正确的结果,不同的格式要分开来处理,我们没有实际数据,是很难调到合理的代码。给楼主提供个思路,地球上还没有超过4位数的海拔,如果数值范围后面不跟空格,就取4位是数值出来,如上面的3000。
非常感谢各位。数据是不够规范,要是3位如900就不好办了。没有关系的.只要你的数据格式是: '海拔aaaa-bbbb '就行.