A. sql数据补位
用lapd函数,左补零
用法
select LPAD(100,5,0) from al
100为字段名,5为补完后的长度,0为补充的字符
B. 在sql语句里怎么右补空格
示例:
右补空格,字符长度定为10
declare@strvarchar(1000)
set@str='123'
selectleft(@str+'',10)
C. sql位数不足补0
假设结果值用变量a表示,补位用b表示,需求结果用c表示
if len(a)=1 then
b="000"
elseif len(a)=2 then
b="00"
elseif len(a)=3 then
b="0"
else
b=""
end if
c=b&a
D. sql 不够七位数 在左侧自动补零,怎么实现
您好:
跟您一个参考资料
第一种方法:
right('00000'+cast(@countasvarchar),5)
其中'00000'的个数为right函数的最后参数,例如这里是5,所以有5个0
@count就是被格式化的正整数
例如:
1、selectright('00000'+cast(dense_rank()over(orderbyzsbh)asVARCHAR(20)),5)
2、declare@countint
set@count=0
while(@count<1000)
begin
printright('00000'+cast(@countasvarchar),5)
set@count=@count+1
end
第二种方法:使用REPLICATE函数,将字串值重复指定的次数。例如:
REPLICATE('重复',3)输出结果为:重复重复重复
【值得注意的是当integer_expression值为负值,则返回NULL】
因此,补0操作可如下实现:
SELECTREPLICATE('0',5-len('9'))+'9'--左边补0,如00009
SELECT'9'+REPLICATE('0',5-len('9'))--右边补0,如90000
第三种方法:使用stuff函数,删除指定长度的字符,并在指定的起点处插入另一组字符。例如:
第一个字符串abcdef中删除从第2个位置(字符b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。
SELECTSTUFF('abcdef',2,3,'ijklmn')
输出结果为:
aijklmnef。
因此补0操作可如下实现:
selectstuff('00000',len('00000')-len('123')+1,len('123'),'123')
E. SQL不够10位 补0 补到10位写何写
咱们来看:
cast('000000000'+convert(int,code)asvarchar(20))
首先:
convert(int,code) :你把code 转为 int
然后
'000000000'+convert(int,code)我估计sqlserver肯定把表达式作为数字相加了,那么0000...的相加就没有作用了。
最后
就不是你要的结果了。
大致应该这样:
SELECT
right(cast('000000000'+rtrim(code)asvarchar(20)),10),code,
id,pydate,isnull(lzdate,'9999-12-31'),0
FROMzlemployee
F. Oracle数据库,在写SQL语句时,怎样将一个数精确到小数点后两位,并在前面补0,补齐规定的位数
你要减小精度,必须修该的列为空才可以,可以先删除表数据,再修改。
修改的sql语句如下:
alter
table
emp
modify(sal
number(5,1));
G. 这样的sql/pl自动补位语句怎么写
create table test( testid int)
insert into test values(357)
insert into test values(2783)
insert into test values(58690)
--你在创建一个表
create table tab(rowid int)
--在向数据库里面插入0到99
insert into tab values(0)
insert into tab values(1)
insert into tab values(2)
insert into tab values(3)
insert into tab values(4)
insert into tab values(5)
insert into tab values(6)
insert into tab values(7)
insert into tab values(8)
insert into tab values(9)
......
select substring(rtrim(str((ltrim(str(testid))+(select left('0000',5-len(testid))))+tab.rowid)),1,10) from test , tab where (5-len(testid))>=len(rowid) or (len(testid)=5 and rowid=0) order by testid,rowid
弄了很久,也不知道你要的结果是不是这个结果,你把这段sql可以考进sqlserver2005或者2000去运行看下结果,上面我只添加了0--9的,你可以添到99在试下。
H. SQL SERVER自动在后面补0满足8位数请问怎么写
如果是字符串的话,可以通过字符串连接的方式实现,由于SQL Server没有Oracle的lpad和rpad函数,可以使用REPLICATE函数代替
column_name+replicate('0',8-column_name.len()); 缺多少位就补上多少位,
I. 求助各位老师,如何用SQL语句实现某列值的补位和减位
CREATE TABLE #temp
(
F_BH VARCHAR(30)
);
INSERT INTO #temp VALUES('9922010010001');
SELECT
F_BH,
SUBSTRING(F_BH, 1, 4)
+ '0'
+ SUBSTRING(F_BH, 5, 5)
+ SUBSTRING(F_BH, 11, 3)
FROM
#temp
F_BH
------------------------------ -------------------------
9922010010001 9922001001001
(1 行受影响)
如果是要更新的话,就是
UPDATE
#temp
SET
F_BH =
SUBSTRING(F_BH, 1, 4)
+ '0'
+ SUBSTRING(F_BH, 5, 5)
+ SUBSTRING(F_BH, 11, 3);
注意,更新语句不要执行多次,否则编码规则就要乱了。
J. SQL怎样在固定值后面补0
具体什么数据库?
以sqlserver,mysql,oracle各自为例:
sqlserver:
createtabletest
(点名varchar(20));
insertintotestvalues('HS901');
insertintotestvalues('HS9010');
insertintotestvalues('HS9010');
执行:
selectLEFT(点名+'00000000',8)fromtest
结果: