CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [求助] 100分解SQL难题!!!数据库varchar字段与数值比较
coolboy0529
灵玉会员
Rank: 8Rank: 8



UID 307576
精华 0
积分 7450
帖子 784
威望 3354
ZD币 986 元
阅读权限 180
注册 2008-3-14
状态 离线
  楼主
发表于 2008-4-25 15:43  资料  个人空间  短消息  加为好友 
开发者在线

100分解SQL难题!!!数据库varchar字段与数值比较

我已经在这里:   
  http://community.csdn.net/Expert/TopicView.asp?id=5194880   
  http://community.csdn.net/Expert/TopicView.asp?id=5198968   
   
  都问过这个问题了,因还是没能解决问题。所以再次请高手帮忙!!谢谢!!   
  解答后,这两个贴里的50分都一起奉上。   
   
  只有再请教大家一次了。   
  如下:   
  CREATE   TABLE   [dbo].[templet]   (   
  [id]   [int]   IDENTITY   (1,   1)   NOT   NULL   ,   
  [fsnum]   [int]   NULL   ,   
  [zsSpec]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   
  )   ON   [PRIMARY]   
   
  比如有如下记录   
  id               fsnum               zsSpec   
  1                     2                       10'   
  2                     3                       22'   
  3                     1                       9'   
  4                     0                        
  5                     4                       25'   
  6                     1                     10-20'   
  7                     2                           
  8                     5                     20-30'   
  9                     3                     50-60'   
  10                   2                                   
  *注:zsSpec有可能为空,以上没写值的地方为空(并非Null);10-20'表示10到20之间的数。   
   
  现要将zsSpec与数字(变量)作比较,比如求出所有zsSpec大于22的记录为第5、8、9条记记录。   
   
  请教SQL语句应该怎么写,尝试了好多方法都不行。   
   
  有位朋友是这样写的:   
  (   
  select   *   from     
  dbo.templet   
  where   cast(Substring(isnull(zsSpec,'0'''),1,charindex('-',isnull(zsSpec,'0'''))-1)   as   int)>22   
  and   charindex('-',isnull(zsSpec,'0'''))   >0   
  )   
  union   all   
   
  (   
    select   *   from     
  dbo.templet   
  where   cast(Substring(isnull(zsSpec,'0'''),1,charindex('''',isnull(zsSpec,'0'''))-1)   as   int)>22   
  and   charindex('-',isnull(zsSpec,'0'''))   =0   
   
  )   
  理论上是行得通,可是报错“报错“向   substring   函数传递了无效的   length   参数。”。   
   
  请问各位有什么好的解决方法??




顶部
 



当前时区 GMT+8, 现在时间是 2009-7-4 15:47

  Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
Processed in 0.068575 second(s), 3/3 queries

清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版