有一个表A,它有一个varchar(10)的字段,num; 内容如下:
A
001
002
003 //注意“004”,“005”没有。。
006
007
......
要求,能够把“004”给查出来。
如果把“004”插入后,则把“005”查询出来。
如果把“004”,“005”都插入后,那么应该把“008”查询出来。
A
001
002
003 //注意“004”,“005”没有。。
006
007
......
要求,能够把“004”给查出来。
如果把“004”插入后,则把“005”查询出来。
如果把“004”,“005”都插入后,那么应该把“008”查询出来。
解决方案 »
- 如何根据会计期间得知下个月的会计期间和下个月的起始日期和月末日期
- 存储过程的问题 逻辑文件名 "***" 已被使用。请选择另一个名称。
- sql存储过程语句怎么改成asp里面的sql语句
- 性能监视器计数器要求 (错误)高手帮忙
- sql server 2000 怎样进入查询分析器
- win2000和sqlserver 并发连接数问题!急等!!
- oracle中的to_date,sql server 2005对应的方法是什么
- 在这里居然找不到“ 消息 7391” 的真正解决方法,哎~!!
- 存储过程的逻辑结构问题,求教下?
- 在ASP中,如何返回执行sql语句所耗费的时间?
- 如果更新多条记录?在线等!
- SQL语句报错!急!!!!!! 在线等!!!!!
from a x left join a y
on right('000'+cast(cast(x.a as int)+1 as varchar(10)),3)=y.a
where y.a is null
INSERT @t SELECT '001'
UNION ALL SELECT '002'
UNION ALL SELECT '003'
UNION ALL SELECT '006'
UNION ALL SELECT '007'SELECT TOP 1 LEFT('00000',3-LEN(CAST(A AS INT) + 1))+RTRIM(CAST(A AS INT) + 1) FROM @t a WHERE NOT EXISTS(SELECT 1 FROM @t b WHERE CAST(a.A AS INT)+1=CAST(b.A AS INT))
帮LZ up ing。 做个记号先!
from A t
where not exists(select cast(num as int) from A where cast(num as int)=cast(t.num as int)+1)
服务器: 消息 208,级别 16,状态 1,行 1
对象名 'A' 无效。
服务器: 消息 208,级别 16,状态 1,行 1
对象名 'A' 无效。
你的表名是A吗?数据库指定了没?
比如说,003加1 后应该是4,但是4在原表中不存在,那么Select出来的结果就是003加1,即004
不好意思,我把一个字段搞错了。to: lzhs(快乐至上)
谢谢你的解释,把查询的原理弄明白了,要不然,知道这个问题的代码怎么写,下次遇到了,却又不会了。
有一个表A,它有一个varchar(10)的字段,num; 内容如下:
A
001
002
003 //注意“004”,“005”没有。。
006
007
......
要求,能够把“004”给查出来。
如果把“004”插入后,则把“005”查询出来。
如果把“004”,“005”都插入后,那么应该把“008”查询出来。
*/--YCZEALOT 20060816IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID=OBJECT_ID('T') AND XTYPE='U') DROP TABLE T
CREATE TABLE T
(
V CHAR(8)
)INSERT INTO T(v)
SELECT '0001' UNION ALL
SELECT '0002' UNION ALL
SELECT '0004' UNION ALL
SELECT '0006' UNION ALL
SELECT '0007' UNION ALL
SELECT '0009' IF EXISTS (SELECT * FROM TEMPDB.DBO.SYSOBJECTS WHERE ID=OBJECT_ID('TEMPDB..#T') AND XTYPE='U') DROP TABLE #T
SELECT ID1=IDENTITY(INT,1,1),* INTO #T FROM T
SELECT TOP 1 CASE (LEN(CONVERT(INT,V))) WHEN 1 THEN '000'
WHEN 2 THEN '00'
WHEN 3 THEN '0'
ELSE ''
END
+CONVERT(CHAR(1),ID1) AS V FROM #T WHERE ID1<>V/*
--RESULT
--0003
*/