我已经在这里:
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 参数。”。
请问各位有什么好的解决方法??