使用TSQL,我可以将CHAR(1)列递增1并在没有CASE语句的LEFT OUTER
发布时间:2020-12-12 08:23:11 所属栏目:MsSql教程 来源:网络整理
导读:这个问题类似于我的 last question.除了这次我使用的是字母而不是6位整数.我想找到不按顺序的“字母”. 假设我有以下数据: id | Date | Letter-----------------------------01 | 5/1/2009 | X02 | 5/1/2009 | Y03 | 5/1/2009 | Z04 | 5/1/2009 | A05 | 5/1/
这个问题类似于我的
last question.除了这次我使用的是字母而不是6位整数.我想找到不按顺序的“字母”.
假设我有以下数据: id | Date | Letter ----------------------------- 01 | 5/1/2009 | X 02 | 5/1/2009 | Y 03 | 5/1/2009 | Z 04 | 5/1/2009 | A 05 | 5/1/2009 | B 06 | 5/1/2009 | D 我希望能够提出一个查询,告诉我在05和06行之间应该有一行“C”. 在我的上一个问题(使用INT)中,我获得了类似于以下解决方案的东西,并且它工作得很好. SELECT * from TABLE1 t1 LEFT OUTER JOIN TABLE2 t2 ON t2.INTCol - 1 = t2.INTCol AND t1.date = t2.date WHERE t2.id IS NULL 好吧,有信(据我所知)我不能说(G – 1).那么,还有另一种方法吗? 我使用的数据库是SQL Server 2005.我相信在使用TRANSLATE的PL / SQL中有一个简单的解决方案,但我不能做任何事情,比如使用TSQL. 解决方法您可以使用将char(1)转换为其ascii数字ASCII(Letter) 然后你可以将它递增1并使用CHAR(如果需要)将其返回到一个字母,所以你的代码是这样的: SELECT * from TABLE1 t1 LEFT OUTER JOIN TABLE2 t2 ON ASCII(t1.INTCol) - 1 = ASCII(t2.INTCol) AND t1.date = t2.date WHERE t2.id IS NULL (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |