当前位置:首页 » 编程语言 » sql语句断号
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql语句断号

发布时间: 2022-07-19 09:45:16

① VB如何判断sql数据库中某张表的某个字段(“编号”字段)是否存在断号,并显示所缺断号

create table #b (a int)

insert #b select 1
insert #b select 2
insert #b select 3
insert #b select 5
insert #b select 7
insert #b select 8
insert #b select 11

select * from #b

declare @a int
declare @b int

select @a=min(a) from #b
select @b=max(a) from #b

while (@a<@b)
begin

if not exists (select * from #b where a =@a )
select @a
set @a=@a+1
end

② 求助一条SQL语句 - 技术问答

select
beginNo
,(select
min(id)-1
from
A
where
id>beginNo)
as
endNO
from
(select
id
1
AS
beginNo
from
A
where
id
1
not
in(select
id
from
A)
and
id
<
(select
max(id)
from
A))
as
newTable
/*
要取断号,断号的含义也就是不在源表中的号,但断号肯定是源表中的某个号码加上一个数得到的,也就是说,第一步需要找到源表中的每一个值加1后(取名为beginNO)不存在源表序列中的值,然后以此为基础,在源表中找大于beginNo的最小值(取名endNo),那么返回一个
数据集
表示原表所有的断号段,从beginNo到endNO的值即为断号值,
*/

③ 如何用SQL语句求排除断号的号码串

我们经过分析发现,实现这一需求的难点主要有两点: 1. 如果要找出断号,用SQL语句实现,主要是要考虑性能; 2. 将排除断后的使用号码段的多条记录转换为一行显示,即用SQL实现行列转换; 如果通过编程来实现,这两点都不难,但通过SQL来实现,则需要一些技巧。 假设知道已用票据号为3,4,5,7,8,11,12,最小为3,最大为12,求断号的SQL如下: Select Rownum + (3 - 1)From DualConnect By Rownum

④ sql 删记录造成某字段局部断号,如何把这些记录重新排序另这个字段与其他表某字段关联,如何同时更新

这个问题是由于你的序号字段既想做为关联的Key,又想用来排序导致的。从你的例子来看,应该是你显示结果要对单号里的物品进行排序。

如果你用的是oracle,建议直接用 ROW_NUMBER() OVER() 来实现排序。

针对表t1的sql语句:
select id,单号,ROW_NUMBER() OVER(PARTITION BY 单号 ORDER BY 序号) 序号,物品 from t1

针对表t2的sql语句:
select id,单号,ROW_NUMBER() OVER(PARTITION BY 单号 ORDER BY 序号) 序号,价格 from t2

采用这种方式,你就可以把序号字段拿来关联,而且删除了其中一张表的数据后,另外一张表就不用更新。

⑤ 如何用sql语句查询断号

经过努力,解决了这个问题(此前,绝大多数的方法都是生成一个从最小直到最大值的连续序列过渡表,然后两表关联或利用子查询,查处源表中不存在的值),该方法比较简单也比较巧妙,思路如此:
断号的含义也就是不在源表中的号,但断号肯定是源表中的某个号码加上一个数得到的,也就是说,我第一步需要找到源表中的每一个值加1后(取名为f1)不存在源表序列中的值,然后以此为基础,在源表中找大于f1的最小值(取名f2),那么从f1到f2的值即为断号值,到此解决!!

语句如下(绝对原创):

SELECT f1, (select min(f)-1 from t where f>f1) as f2
FROM
(SELECT f+1 AS f1
FROM t
WHERE f+1 not in (select f from t) and f <(select max(f) from t)
) AS cc;

结果如下:
f1 f2
6 6
10 13

徐州 吴艳山

⑥ 怎样编写SQL语句找到断号的地方

楼上2位的方法真不敢恭维,有了不断号的表还检查什么,
还有3天过期了,搂住不知道解决没有,要是还需要解决的话请在补充中注明~写语句出来要点时间,不过如果用创建临时表或者存储过程的话倒是有现成的
declare @temptable table(a int)

declare @char varchar(1000),@i int,@num int
set @num=(select max(cid) from table) --cid 为id字段
set @i=1
while @i<=@num
begin
insert @temptable values (@i)
set @i=@i+1
end
select a from @temptable where a not in (select cid from table)

⑦ 在mssql分组查询一组区间内的断号区间的sql语句

可以提供思路:

想要做到4-6,8-19可能比较复杂,但是想要把断号的找出来容易;

首先需要建一个没有断号的临时表:可以按照全宗号,目录号分组,取出各分组案卷号最大最小值,然后散开(注意:可能缺失的就是极值)散开的函数数据库都不一样(笛卡尔积也可以),pgsql有generate_series();

⑧ sql中查询一个表,ID为自增,当中间出现断号则显示出断的ID号后面的列显示空或特定字符

select isnull(B.ID,A.rowNum) as ID,isnull(B.NAME,'占位') as NAME from
(select ROW_NUMBER() over (order by ID) as rowNum from table1) A
full join table1 B on A.rowNum=B.ID

⑨ 怎么查询SQL中连续编号中间的断号

思路给你:

1、找到你的表中的连续编号的最小值。

2、找到你的表中的连续编号的最大值。

3、产生一个临时表,它的一个字段最小值到最大值连续产生记录。

4、找到临时表中的“那个字段中”的“记录”不在“你的表中”的“连续编号”中存在的所有记录。


参考代码如下:

--初参条件针对对象表LS_bas1数据库里的TA1表
--查TA1表中ID号不连续缺少的记录

--定义三个变量最小记录、最大记录、记录搜索用
DECLARE@MINIDINT,@MAXIDINT,@GOINTINT

--从TA1表中取得ID最小的、ID最大的记录
SELECT@MINID=MIN(ID),@MAXID=MAX(ID)FROMLS_bas1.DBO.TA1

--从最小记录开始循环向临时表#LSTAB里追加记录,以产生连续的GOID记录
SET@GOINT=@MINID
SELECT@GOINTASGOIDINTO#LSTAB
WHILE@GOINT<@MAXIDBEGIN
SET@GOINT=@GOINT+1
INSERTINTO#LSTAB(GOID)VALUES(@GOINT)
END

--将#LSTAB中GOID有,与TA1表ID中没有的记录找出来,就是你要的
SELECT*FROM#LSTAB
WHEREGOIDNOTIN(
SELECTIDFROMLS_bas1.DBO.TA1
)
ORDERBYGOID

--最后,好习惯,清理中间的临时表
DROPTABLE#LSTAB

⑩ 请教高手 SQL什么样查询该数字字符断号

create table A
(
b varchar(20)
)
insert A select
'862557001000023' union select
'862557001000034' union select
'862557001000049' union select
'862557001000057' union select
'862557001000066' union select
'862557001000081' union select
'862557001000110'
go
select rtrim(cast(SUBSTRING(k.b,1,LEN(k.b)-1) as bigint)-1) +'5'
from A k
where not exists(select * from A where cast(SUBSTRING(k.b,1,LEN(k.b)-1) as bigint)+1=cast(SUBSTRING(b,1,LEN(b)-1) as bigint))
/*
-------------------------
862557001000055
862557001000075
862557001000105*/