sqlserver前补0,oracle sql 补0

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')

sqlserver中如何判断一列中当值为一位数时前面插入000,二位数插入00,三位数插入0,四位就不做操作

直接用case语句不就行了?

CREATE TABLE test(id int)

INSERT INTO dbo.test

( id )

SELECT 1

UNION ALL

SELECT

2

UNION ALL

SELECT

10

UNION ALL

SELECT

18

UNION ALL

SELECT

113

UNION ALL

SELECT

117

UNION ALL

SELECT

1011

UNION ALL

SELECT

1200

语句:

1、

SELECT id,sid=CASE WHEN LEN(id)=1 THEN '000'+CAST(ID AS VARCHAR(10))

WHEN LEN(id)=2 THEN '00'+CAST(ID AS VARCHAR(10))

WHEN LEN(id)=3 THEN '0'+CAST(ID AS VARCHAR(10))

WHEN LEN(id)=4 THEN CAST(ID AS VARCHAR(10)) END

FROM test

2、

select id,sid=right('000'+CAST(ID AS VARCHAR(10)),4) from test

结果:

1 0001

2 0002

10 0010

18 0018

113 0113

117 0117

1011 1011

1200 1200

因为我用的int类型,所以类型转化

以上是sqlserver数据库的写法

sqlserver 数据库查询一个时间段根据年月日三个字段,注意是三个字段

我刚写了一个MySQL的类似sql查询。

1、将年、月、日和小时组合成一个字符串

2、月日时如果不是两位,在前面补0

3、将字符和判断区间的字符串值进行比较

select * from 表   where CONCAT(vyear

,LPAD(vmonth

,2,0),LPAD(vday,2,0),LPAD(Hour,2,0)) = '2017081000' and CONCAT(vyear,LPAD(vmonth,2,0),LPAD(vday,2,0),LPAD(Hour,2,0)) = '2017081023'

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

sqlserver自动把数字前面0省略

sqlserver自动,

把数字前面0省略,

应该设置的时候就是设置省略无意义数字。

sql 怎么判断一个字段是六位如果不足六位在前补零

sqlserver: select right(cast('0000000000'+rtrim(字段) as varchar(20)),7) oralce: select lpad(字段, 7 , '0') from dual


分享文章:sqlserver前补0,oracle sql 补0
标题URL:http://ybzwz.com/article/dscehde.html