首页 新闻 会员 周边 捐助

sql分页存储过程中的convert(varchar(20),@pagesize)是固定的格式吗,具体什么意思

0
悬赏园豆:10 [已解决问题] 解决于 2013-07-30 09:07

set @sql='select top '
+convert(varchar(20),@pageSize)+'

小龙女-90hou的主页 小龙女-90hou | 初学一级 | 园豆:5
提问于:2013-07-29 14:37
< >
分享
最佳答案
0

其实就是为了让@pageSize编程字符串类型,方便拼接sql语句。

如果你是用的SQL05+,那么你可以试试row_number()分页。

收获园豆:4
幻天芒 | 高人七级 |园豆:37207 | 2013-07-29 20:04
其他回答(2)
0

convert只是类型转换。  最后的形式是 eg:  select top 1    

收获园豆:3
滴答的雨 | 园豆:3660 (老鸟四级) | 2013-07-29 14:52

发现在sql语句中都是转换为varchar()类型的呢,

where allInfo.rowid between '
            + CONVERT(VARCHAR(10), @StartIndex) + ' and '
            + CONVERT(VARCHAR(10), @EndIndex) + '' ,convert类型转换的作用是什么啊

支持(0) 反对(0) 小龙女-90hou | 园豆:5 (初学一级) | 2013-07-29 14:57

@小龙女-90hou:看需要什么类型就转化为什么类型吧,刚我试了下 top (convert(varchar(20),@pageSize)) 会报错,要求是整数而不是字符串

支持(0) 反对(0) 滴答的雨 | 园豆:3660 (老鸟四级) | 2013-07-29 16:09
0

仅是为了拼结字符串

收获园豆:3
dudu | 园豆:29570 (高人七级) | 2013-07-29 16:48

@dudu

我也有点不解,我也比较少看到这样写的,自己基本也没这样写过。最多在select的时候会使用一下。我试了下这条语句,执行ok。所以在top和where中我觉得没什么必要使用convert

declare @1 int;
set @1=1;
select top  (@1) EmailType from Kad_Email where EmailId between @1 and 7
支持(0) 反对(0) 滴答的雨 | 园豆:3660 (老鸟四级) | 2013-07-29 17:01

@滴答的雨: 如果不用convert会报错

DECLARE @pageSize INT
DECLARE @sql NVARCHAR(MAX)
set @sql = 'select top ' +@pageSize

错误如下:

Conversion failed when converting the varchar value 'select top ' to data type int.
支持(0) 反对(0) dudu | 园豆:29570 (高人七级) | 2013-07-29 17:11

@dudu: 是有这个情况,但是一般在做参数化查询,他传入NVARCHAR应该是参数传入的问题,我们不需要去这样兼容吧。。还是convert有几个必须存在的场景?

支持(0) 反对(0) 滴答的雨 | 园豆:3660 (老鸟四级) | 2013-07-29 17:16

@滴答的雨: 额,我看错了。。。明白了,谢了

支持(0) 反对(0) 滴答的雨 | 园豆:3660 (老鸟四级) | 2013-07-29 17:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册