字段A是一段文字,内容如:“ksljfl sdfkjka kjf 海拔1000-3000 sdfsd dsfkj”
现在的问题是:查询包含海拔2500的数据,请问SQL语句怎么写?

解决方案 »

  1.   

    select * from t where A like '%海拔2500%'
      

  2.   

    字段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
      

  3.   

    字段A是一段文字,内容如:“ksljfl sdfkjka kjf 海拔1000-3000 sdfsd dsfkj”
    现在的问题是:查询包含海拔2500的数据,请问SQL语句怎么写?查询包含海拔2500的数据估计是查海拔1000-3000 (a到b)之间的数据
    也就是说 a <= 2500 <= b
      

  4.   

    我看明白了,但是运行时错,说substring的lenth参数有问题。
      

  5.   

    我看明白了,但是运行时错,说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
      

  6.   

    ksljfl sdfkjka kjf 海拔1000-3000 sdfsd dsfkj
    ------------
    海拔数值范围后面都跟个空格,这种格式好办,就怕你的格式不统一。
    所以想得到正确的结果,不同的格式要分开来处理,我们没有实际数据,是很难调到合理的代码。给楼主提供个思路,地球上还没有超过4位数的海拔,如果数值范围后面不跟空格,就取4位是数值出来,如上面的3000。
      

  7.   

    如果先取出1000-3000,然后用split是否可以?
      

  8.   

    bob59(bis) ( ) 信誉:99 
    非常感谢各位。数据是不够规范,要是3位如900就不好办了。没有关系的.只要你的数据格式是: '海拔aaaa-bbbb '就行.