RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
sqlserver补齐0,oracle sql 补0

sqlserver 中,如何查询把缺少数据自动填补出来,下图中缺少2013-05-27 19:00:00.000 130.4560000000

问题分析:您要的结果是要每一小时一条记录,补充添写中间间隔一小时以上的记录。并且不另增加记录:

创新互联建站是一家专业提供诸城企业网站建设,专注与网站设计制作、网站制作、H5技术、小程序制作等业务。10年已为诸城众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

问题解决:找到每一条记录时间加1小时在表中不存在的记录,然后加一小时填入表中,不包括最后(最大的)的时间。

3.语句实现(两种方案):

以下语句可以在每一个缺少的数据后加入一小时后填入,但间隔更大(超过2小时后就不行了):

insert into tablename

select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a

where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime)

and a.fieldtime!=(select max(fieldtime) from tablename)--去掉最后的时间

以下方案可以完成补充间隔数小时的记录:将该语句循环执行,直到没有记录更改。

insert into tablename

select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a

where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime)

and a.fieldtime!=(select max(fieldtime) from tablename)--去掉最后的时间

while @@rowcount0

select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime) and a.fieldtime!=(select max(fieldtime) from tablename)

sql 不够七位数 在左侧自动补零,怎么实现

您好:

跟您一个参考资料

第一种方法:

right('00000'+cast(@count as varchar),5)

其中'00000'的个数为right函数的最后参数,例如这里是5,所以有5个0

@count就是被格式化的正整数

例如:

1、select right('00000'+cast(dense_rank() over( order by zsbh ) as VARCHAR(20)),5)

2、declare @count int

set @count = 0

while (@count  1000)

begin

print right('00000'+cast(@count as varchar),5)

set @count = @count +1

end

第二种方法:使用REPLICATE函数,将字串值重复指定的次数。例如:

REPLICATE('重复',3)输出结果为:重复重复重复

【 值得注意的是当 integer_expression 值为负值,则返回NULL 】

因此,补0操作可如下实现:

SELECT REPLICATE('0',5-len('9'))+'9' --左边补0, 如 00009

SELECT '9' + REPLICATE('0',5-len('9')) --右边补0,如 90000

第三种方法:使用stuff函数,删除指定长度的字符,并在指定的起点处插入另一组字符。例如:

第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。

SELECT STUFF('abcdef', 2, 3, 'ijklmn')

输出结果为:

aijklmnef。

因此补0操作可如下实现:

select stuff('00000',len('00000')-len('123')+1,len('123'),'123')

SQL SERVER自动在前面补0满足10位请问怎么写?

咱们来看:

cast('000000000'+convert(int,code)as varchar(20))

首先:

convert(int,code) :你把code 转为 int

然后

'000000000'+convert(int,code)我估计sqlserver肯定把表达式作为数字相加了,那么0000...的相加就没有作用了。

最后

就不是你要的结果了。

大致应该这样:

SELECT 

right(cast('000000000'+rtrim(code) as varchar(20)),10),code,

id,pydate,isnull(lzdate,'9999-12-31'),0 

FROM zlemployee

SQL怎样在固定值后面补0

具体什么数据库?

以sqlserver,mysql,oracle各自为例:

sqlserver:

create table test

(点名 varchar(20));

insert into test values ('HS901');

insert into test values ('HS9010');

insert into test values ('HS9010');

执行:

select LEFT(点名+'00000000',8) from test

结果:

mysql:创建表插入数据过程都差不多,不赘述,执行:

create table test

(点名 varchar(20));

insert into test values ('HS901');

insert into test values ('HS9010');

insert into test values ('HS9010');

结果:

oracle:执行:

select rpad(点名,8,'0') from test

结果:

sql 不够七位数 在左侧自动补零,怎么实现

sqlserver:

select right(cast('0000000000'+rtrim(字段) as varchar(20)),7)

oralce:

select lpad(字段, 7 , '0') from dual

sql查询没有数据的时候怎么用0填充

这样:

SELECT

a.dt AS '时间',

ISNULL(b.yield, '0') AS '数据'

FROM

(

SELECT

dateadd(d, number, '2018-11-01') dt

FROM

master..spt_values

WHERE

type = 'p'

AND dateadd(d, number, '2018-11-01') = '2018-11-30'

) a

LEFT JOIN CE_BD_E_ELECTRIC_WORKSHIFT_T b ON a.dt = b.opdate

扩展资料:

注意事项

COALESCE是一个函数, (expression_1, expression_2, …,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。

场景一:你想要获取最大值,然后+1返回(即返回的值已经默认为空了),程序接收了本来不该为空的值去运算,就会出错。

SELECT MAX(my_money)+1 FROM tb_test;

改进方法:使用 coalesce函数   COALESCE(值1, 值2,......, 值n) ,只要遇到非null值就返回。

这样子就可以设置一个值,让你第一个不成功后,返回指定的值,如下面,返回的是1.

SELECT COALESCE(MAX(my_money)+1, 1) FROM tb_test;


分享标题:sqlserver补齐0,oracle sql 补0
当前链接:http://scyingshan.cn/article/dsgpcgc.html