sql server tips 2

1 取中间n条记录


select top 5 * from tab where id in
(select top 10 id from tab order by id)
and
id not in
(select top 5 id from tab order by id)
可以取道6-10条记录

2 select top @para不能用的替代
http://www.cnblogs.com/lsmwell/archive/2005/06/18/176571.aspx
今天写了个SELECT语句:SELECT TOP @ NUM * FROM XXXX 一执行,呵呵,居然错误,呵呵,到底是怎么回事情呢~?
大家都知道SELECT TOP 3 * FROM XXXX 是能执行的,但是如果要把这个3写成3*3,呵呵,那就不行了,郁闷把!
但是在用的时候,我们往往要把这个TOP 3弄成一个TOP @NUM  这样才符合我们的需要么,嘿嘿!
我于是上GOOGLE去GO了一下,
原来这里面还是有技巧的说.来看一下代码
DECLARE @SQL VARCHAR(100)
DECLARE @NUM INT 
SET @NUM = 3
SET @SQL = 'SELECT TOP '+CAST(@NUM AS VARCHAR(20))+' * FROM XXXX '
EXEC(@SQL)
--PRAINT(@SQL)


呵呵,有意思把! 其实SQL 还是执行了 SELECT TOP 3 * FROM XXXX 
原理就不用说了把,但是里面有个小技巧,有时候会发生错误,这个时候你就要用
PRAINT出来看一下SQL语句是不是正确的了,因为我们的SQL语句在字符串里,系统是检查不出来哦~!
哎!!我的文笔实在是太差了,连说话能力都有问题,估计,呵呵,还有问题的话,上GOOGLE里找去落!(喂,GOOGLE,你要给广告费了~!)
另外说明,SQL SERVER 2005是可以直接用代参数的TOP的哦,就不用这么麻烦类~~!微软的东西,哎~~!

2 读取表中的字段名及数据类型等

select   b.name,a.name ,b.length  from   systypes as a , syscolumns as b where b.xtype=a.xtype
and b.id = object_id('tableName)

3异常 Underlying input stream returned zero bytes 解决办法

http://treetree42.blogchina.com/viewdiary.15408750.html
系统环境
jdk1.5
hibernate 3.0
sql server 2000
ms jdbc driver
将一个varchar类型的字段改为text后,就出现
[Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes 的异常了。
从网上搜集资料来看,由于jdbc的bug,所以不能将一个"NULL"值和一个""(empty)存储在text类型的字段中。
解决办法:可以在表结构中设置字段的默认值为" "(one char)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值