MS-SQL Server中,如何将整数转换成定长字符串,如果结果不足所指定的长度,就在前面补“0”(50分)

  • 主题发起人 主题发起人 坏蟑螂
  • 开始时间 开始时间

坏蟑螂

Unregistered / Unconfirmed
GUEST, unregistred user!
在MS-SQL Server的SQL语言里面,如何简洁地将一个整数转换成一个
定长字符串,如果转换结果不足所指定的长度,就在前面补“0”。

例如:将整数 i 转换成10位宽的字符串
如果在DELPHI里,可以:
Format('%10.10d',) //若i为123,则结果为"0000000123"

在MS-SQL Server的SQL语言中,是否有类似的函数呢?

我目前只能:
Declare @ccc varchar(10), @iii int, @Length int
Select @iii=123
Select @ccc=Convert(varchar(10),@iii)
Select @Length=DataLength(@ccc)
Select @ccc=Replicate('0',10-@Length)+@ccc

但这样做实在太难看了!
 
在显示的时候解决吧,或者改变具体TField的DisplayFormat属性
 
看样子也只能在显示时改了.
不过不一定在TField里改,在数据敏感的控件里头改也行.
 
我只是在SQL-SERVER 上写一个存储过程,
其中需要上述功能,我并不是要用DELPHI
在客户端如何显示数据。
 
以前在FOXPRO 中是这样用的 righ('0000000000'+trim(str(i)),10)
不知SQL 中有没有类似的函数,我不太熟.
 
办法倒是有,不过很龌龊
1、将数据转换为文本
2、在结果前加N个'0'
3、拷贝结果中的右N个字符

以N=10为例,在SQL中语句如下:
select right('0000000000'+convert(char(10),MyField),10) from MyTable

基本上和aaa的方法一样
 
接受答案了.
 
后退
顶部