如何在SQL Server 2008中填充相同的列值长度?

时间:2011-10-29 08:33:10

标签: sql sql-server

Excel工作表数据

Eno  EName  Pincode
1     aaa    123456
2     bbb    123423
3     ccc    34
4     ddd     567
5     eee     4532

表格结构

  Eno  Varchar(10)
  EName  vachar(25)
  Pincode  Nvarchar(6)

我从excel表中获取数据时pincode有3或2或6或4,我必须检查如果pincode列值小于6我有concat 0。

 Eg: Pincode 34 it have only 2 digit so i add 4 zero in front 000034.

结果

EmpInfo

 Eno  EName   PinCode
    1    aaa      123456
    2     bbb     123423 
    3     ccc     000034
    4     ddd     000567
    5      eee    004532

3 个答案:

答案 0 :(得分:2)

您可以向PinCode值添加1000000并获取最右边的6个字母。

select right(1000000+PinCode, 6)

答案 1 :(得分:1)

我建议你将它包装成一个像这样的标量值函数:

CREATE FUNCTION FormatPinCode 
(
    @rawPin NVARCHAR(6),
    @prefix NVARCHAR(6) = '000000' /* Optional */
)
RETURNS NVARCHAR(6)
AS
BEGIN
    DECLARE @Result NVARCHAR(6)
    SELECT @Result = RIGHT(@prefix + @rawPin, 6)
    RETURN @Result
END

像这样使用:

SELECT Eno, EName, FormatPinCode(PinCode)

答案 2 :(得分:0)

试试这个......

select 
Eno,
EName,
right('000000' + PinCode, 6) as PinCode