其实就是为了让@pageSize编程字符串类型,方便拼接sql语句。
如果你是用的SQL05+,那么你可以试试row_number()分页。
convert只是类型转换。 最后的形式是 eg: select top 1
发现在sql语句中都是转换为varchar()类型的呢,
where allInfo.rowid between '
+ CONVERT(VARCHAR(10), @StartIndex) + ' and '
+ CONVERT(VARCHAR(10), @EndIndex) + '' ,convert类型转换的作用是什么啊
@小龙女-90hou:看需要什么类型就转化为什么类型吧,刚我试了下 top (convert(varchar(20),@pageSize)) 会报错,要求是整数而不是字符串
仅是为了拼结字符串
@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
@滴答的雨: 如果不用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.
@dudu: 是有这个情况,但是一般在做参数化查询,他传入NVARCHAR应该是参数传入的问题,我们不需要去这样兼容吧。。还是convert有几个必须存在的场景?
@滴答的雨: 额,我看错了。。。明白了,谢了