sql – 从字符串转换日期和/或时间时转换失败
发布时间:2020-12-12 08:51:52 所属栏目:MsSql教程 来源:网络整理
导读:我有一个相当简单的分页查询,用于从表中获取行 ALTER PROCEDURE mytable.[news_editor_paginate] @count int,@start int,@orderby intASBEGIN SET NOCOUNT ON; SELECT TOP (@count) * FROM ( SELECT news_edits.*,ROW_NUMBER() OVER ( ORDER BY CASE WHEN @or
我有一个相当简单的分页查询,用于从表中获取行
ALTER PROCEDURE mytable.[news_editor_paginate] @count int,@start int,@orderby int AS BEGIN SET NOCOUNT ON; SELECT TOP (@count) * FROM ( SELECT news_edits.*,ROW_NUMBER() OVER ( ORDER BY CASE WHEN @orderby = 0 THEN news_edits.[time] WHEN @orderby = 1 THEN news_edits.lastedit WHEN @orderby = 2 THEN news_edits.title END DESC ) AS num FROM news_edits ) AS a WHERE num > @start END @orderby参数决定结果应由哪个列排序. news_edit.[time]和news_edits.lastedit都是datetime字段.但是news_edits.title是一个varchar字段. 查询对于datetime字段运行正常,但是当@orderby = 2时,我得到以下错误: “转换日期和/或时间从字符串转换失败”. 我遇到的问题是我不想转换任何东西? 解决方法You’ll need to divide yourORDER BY into multiple CASE statements:
ORDER BY CASE WHEN @orderby = 0 THEN news_edits.[time] END DESC,CASE WHEN @orderby = 1 THEN news_edits.lastedit END DESC,CASE WHEN @orderby = 2 THEN news_edits.title END DESC 这是因为单个CASE语句要求所有分支具有兼容的数据类型.由于您的一个CASE中的字符串不能转换为从另一个CASE返回的日期时间,所以您会收到转换错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |