数据工厂吧 关注:6贴子:19
  • 0回复贴,共1

SQL语句 不足位数补0

只看楼主收藏回复

select RIGHT('0000'+CAST( '123' AS nvarchar(50)),4) DWBH
公式 RIGHT('位数'+CAST(要判断的字段 AS nvarchar(50)),位数 )
---------------------------------------------------------------
select RIGHT('00000000'+CAST( A.STOREFRONTOID AS nvarchar(50)),8) as DWBH
8个“0” 字段名 数据类型 “8” 别名
oracle数据库 查询的结果如果是 1 变为0001 如果是12 变为 0012 如果是123 变为 0123 怎么弄啊?
--RPAD 在列的右边粘贴字符 --LPAD 在列的左边粘贴字符 select LPAD(1,4,'0') str , LPAD(12,4,'0') str , LPAD(123,4,'0') str from dual
---------------------------------------------------------------------------------------------
-- Right('A'+cast('B' as nvarchar(50)), C) 变量在右侧A:要补充的字符,补充字符的最大长度。例如:‘0000’ 最多补充4位,不足位用0补充;’aaaa‘ 总共4位,不足位用a补充。
B: 变量C:补充后字符串长度select 'CDMS'+RIGHT('0000000'+CAST( '111' AS nvarchar(50)),7) DWBH -- 结果:0000111select 'CDMS'+RIGHT('000'+CAST( '111' AS nvarchar(50)),7) DWBH -- 结果:000111
-- Left(cast('B' as nvarchar(50))+'AA', C) 变量在左侧A: 要补充的字符,补充字符的长度。例如:‘0000’不足位用0补充, 最多补充4位;’aaaa‘ 不足位用a补充,最多补充4位。 B: 变量C:补充后字符串长度select 'CDMS'+Left(Cast('111' AS nvarchar(50))+'AA',15) DWBH --结果:CDMS111AA----------------------------------------------------------------------------------
用友中举例:
比如:在用友的凭证和明细账表中,“凭证字”,“凭证号”是
1.两个不同的字段,
2.“凭证号”的数据类型,是 :smallint(数字类型),且是从1开始的(即不是4位数)
3. 但是在我们查看明细账,或者查询凭证式,看到的凭证号,是 “记-0001”
为了复合这种格式,就需要:首先:将凭证字和凭证号,两个字段合并程一个字段;然后加工格式,具体代码如下:
--测试位数不足时,进行补位操作------------------2select GL_accvouch.csign as 凭证字 , GL_accvouch.ino_id as 原来凭证号, RIGHT('0000'+CAST( GL_accvouch.ino_id AS nvarchar(50)),4) as 整理后凭证编号 , ( CONVERT(VARCHAR(100),GL_accvouch.csign) + '-' + RIGHT('0000'+CAST( GL_accvouch.ino_id AS nvarchar(50)),4) ) as 完整的凭证号from GL_accvouchorder by GL_accvouch.ino_id
运行结果即为常见格式:
记-0001
记-0002
记-0100
。。。。。。


IP属地:上海1楼2015-03-21 23:14回复