Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将前导零添加到SQL server列中的某些值_Sql_Sql Server_Tsql - Fatal编程技术网

将前导零添加到SQL server列中的某些值

将前导零添加到SQL server列中的某些值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试在sql server中使用int/decimal/numeric列数据类型添加前导零值。如何实现这一目标 update a ---Int/Decimal/Numeric set Column='0'+b.column1 from #temp a ,#temp2 b ---Varchar column where a.id=b.id 预期结果:001234567 实际结果:1234567您的查询所做的是将0添加到一个数字数据类型:正如人们所期望的,它不会影响它。基本上正如@Fa

我正在尝试在sql server中使用int/decimal/numeric列数据类型添加前导零值。如何实现这一目标

update a ---Int/Decimal/Numeric
   set Column='0'+b.column1
from #temp a
,#temp2 b ---Varchar column
where a.id=b.id
预期结果:
001234567


实际结果:
1234567

您的查询所做的是将
0
添加到一个数字数据类型:正如人们所期望的,它不会影响它。基本上正如@Fahmi所评论的,前导零对于数字数据类型(以及类似的数据类型)并不是毫无意义的

您可以在获取值时处理显示问题,通常是将其转换为字符串,如:

select Id, '00' + cast(numberColumn as varchar(9)) from mytable

您可以将“格式”功能与自定义格式一起使用:

示例:选择格式(12,'0000')

返回:“0012


注意,返回的值是一个字符串。数值没有前导零,但它们的字符串表示形式可以有前导零。

这里有两个选项。首先,更改列的类型:

alter #temp alter column a varchar(255);

update a ---Int/Decimal/Numeric
    set Column = right('000000000' + b.column1, 9)
    from #temp a join
         #temp2 b ---Varchar column
         on a.id = b.id;
(注意使用正确的
JOIN
语法。)

另一种选择是计算列:

alter table #temp add column column_formatted as (format(a.column, '000000000'));

-- you still need the update
update a ---Int/Decimal/Numeric
    set Column = try_convert(int, b.column1)
    from #temp a join
         #temp2 b ---Varchar column
         on a.id = b.id;

int /十进制/数字不考虑领先的Zeor,所以它将被丢弃,你必须存储为<代码> VARARAR < /C>或<代码> char < /Cord>,并且需要转换它时,为什么要“添加”一个字符“代码>‘0’< /代码>作为一个前缀,以数字<代码> 1234567代码/代码>结果,在一个值中有两个前导零点,如你预期的结果所示?