今天在SQLSERVER数据库中写个视图,要将一个字符型字段不足位前面补0,保证这个字段的长度为指定字符,oracle中我知道可以用lpad实现,但SQLSERVER太多年没用过了,还真不知道怎么写,于是只好请教开发的同事,同事告诉了我一个方法,语法类似如下
SELECT
CASE LEN(A.STOREFRONTOID)
WHEN 1 THEN '0000000'+CAST(A.STOREFRONTOID as varchar(8))
WHEN 2 THEN '000000'+CAST(A.STOREFRONTOID as varchar(8))
WHEN 3 THEN '00000'+CAST(A.STOREFRONTOID as varchar(8))
WHEN 4 THEN '0000'+CAST(A.STOREFRONTOID as varchar(8))
WHEN 5 THEN '000'+CAST(A.STOREFRONTOID as varchar(8))
WHEN 6 THEN '00'+CAST(A.STOREFRONTOID as varchar(8))
WHEN 7 THEN '0'+CAST(A.STOREFRONTOID as varchar(8))
ELSE CAST(A.STOREFRONTOID as varchar(8)) END DWBH
妈呀,这SQL写得,SQLSERVER不致于这么弱吧,这才8位不足补8位,这要是20位或更多位还得了,看来还得靠自己,通过上网搜索,找到了比较好的方法
于是上面的代码就变成了
select RIGHT('00000000'+CAST(
A.STOREFRONTOID AS nvarchar(50)),8) DWBH
一句SQL搞定
顺手把ORACLE中类似的功能也贴一下
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
添加新评论1 条评论
2012-11-10 08:55