风影子
作者风影子·2012-11-08 16:17
数据库管理员·深圳

sql位数不足补0

字数 1339阅读 9210评论 1赞 1
      今天在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位或更多位还得了,看来还得靠自己,通过上网搜索,找到了比较好的方法
参考:http://www.csharpwin.com/csharpspace/12126r3273.shtml
     于是上面的代码就变成了
select RIGHT('00000000'+CAST( A.STOREFRONTOID  AS nvarchar(50)),8) DWBH
     一句SQL搞定

     顺手把ORACLE中类似的功能也贴一下
参考:http://zhidao.baidu.com/question/126745145.html&__bd_tkn__=75f8485d3a2499274a6dfc73f9b57ee28205c9bca62d348105b2f81d78e58e932a35cb62efe0823174ec7e11a1fbf820def026bc2e

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

添加新评论1 条评论

geniusgenius技术经理华洋广场
2012-11-10 08:55
好东西  学习了
Ctrl+Enter 发表

作者其他文章

X社区推广