求一条SQL语句

良朋 2019-01-23 04:48:29
SQL语句太强大了,我用以下语句
SELECT * FROM BarCodeTable WHERE BarCode BETWEEN 'LHPU690301C9D' AND 'LHPU690301CA5'
就可以查询出记录如下:
1 LHPU690301C9D 2019/1/23
2 LHPU690301C9F 2019/1/23
3 LHPU690301CA0 2019/1/23
4 LHPU690301CA1 2019/1/23
5 LHPU690301CA2 2019/1/23
6 LHPU690301CA3 2019/1/23
7 LHPU690301CA4 2019/1/23
8 LHPU690301CA5 2019/1/23

不用自己去关心Between的是字符还是数字,是十六进制还是十进制。

所以我想求一条SQL,能不能查询出BarCode 中缺少的记录? 我的BarCode 后面几位是按十六进制顺序增长的,比如上面上面1和2之间就少了一条LHPU690301C9E.
...全文
205 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
OneCoderr 2019-01-28
  • 打赏
  • 举报
回复
两种方法:
一种是查询到DataTable中,然后遍历,条码十六进制+1处理比较麻烦,可用以下办法:

BarCodeIncrease = BarCodeIncrease.Substring(0, iDigital) + (Convert.ToInt64(BarCodeIncrease.Substring(iDigital, jLength), 16) + 1).ToString("X");



第二种直接用SQL 语句 NOT IN,但是加1处理比较困难,而且如果连续缺失了两个条码就处理不过来。下面实例barcode是bigint.

SELECT A.Id AS '序号', A.BARCODE+1 AS '条码' FROM TEST A WHERE A.BARCODE+1 NOT IN (SELECT B.BarCode FROM TEST B ) AND A.BarCode BETWEEN 65413 AND 654129-1
CGabriel 2019-01-23
  • 打赏
  • 举报
回复
使用游标 (CURSOR) http://www.cnblogs.com/kissdodog/archive/2013/06/28/3161341.html 逐行遍历: 看 Barcode + 1 是不是下一条记录,如果不是就表明缺失了。 然后继续加,直到与下一条记录相等为止。
xuzuning 2019-01-23
  • 打赏
  • 举报
回复
化为数值,左表加一做左在连接,即得
2081 2019-01-23
  • 打赏
  • 举报
回复
SELECT SUBSTRING(BarCode ,LEN(BarCode ),1),SUM(1) FROM dbo.BarCodeTable WHERE BarCode BETWEEN 'LHPU690301C9D' AND 'LHPU690301CA5' GROUP BY SUBSTRING(BarCode ,LEN(BarCode ),1) ORDER BY SUBSTRING(BarCode ,LEN(BarCode ),1) 统计 BarCode 的最后一位 出现的次数 看哪次少了[/quote]
2081 2019-01-23
  • 打赏
  • 举报
回复
SELECT SUBSTRING(BarCode ,LEN(BarCode )-1,1),SUM(1) FROM dbo.BarCodeTable WHERE BarCode BETWEEN 'LHPU690301C9D' AND 'LHPU690301CA5' GROUP BY SUBSTRING(BarCode ,LEN(BarCode )-1,1) ORDER BY SUBSTRING(BarCode ,LEN(BarCode )-1,1) 统计 BarCode 的最后一位 出现的次数 看哪次少了
良朋 2019-01-23
  • 打赏
  • 举报
回复
比如提供一个范围,从第一条LHPU690301C9D到最后一条LHPU690301CA5,因为它是十六进制逐一累加的,如果用遍历的方法是可以查询出漏掉的记录。 我想能不能用SQL语句就可以查询出来? 论坛的高手很多, 也许就可以弄出来。
大然然 2019-01-23
  • 打赏
  • 举报
回复
数据库查有的东西, 返回你的业务层,让他去组装你没有的东西
LQ_DaYuRen 2019-01-23
  • 打赏
  • 举报
回复
查询的前提是什么?是要存在,你数据库里面都没有记录,你用sql查什么?

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧