如何在sql行中的数字前添加0

时间:2015-06-26 21:12:33

标签: c# mysql sql

我有一个SP和一个SQL表,当我插入一个值03时,它将其视为3,如下所示

id  | state
------------
3   |   wa
4   |   ma
15  |   ak

存储过程:

alter PROCEDURE [dbo].GetCountofdata 
    (@Num varchar(10)) 
AS
BEGIN
    SELECT COUNT(id) FROM Countofdata WHERE id = @Num  
END

exec GetCountofdata '03'  --> result = 0
exec GetCountofdata '3'  --> result = 1

当我将参数(来自c#)传递给03时,我想要result = 1                 要么 有没有办法在行中插入像03这样的值(创建表时的任何特殊脚本)

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

你试过垫了吗? 这是Sql Server中的一个链接:http://www.tech-recipes.com/rx/30469/sql-server-how-to-left-pad-a-number-with-zeros/

答案 1 :(得分:0)

在SQL(与许多其他语言一样)中存储033等数据需要不同的数据类型,因此对于03,您将使用varchar(或类似)数据类型它基本上存储字符串并将存储在其中的数据视为字符串,而不管它是否包含数字。对这些数据使用关节运算时,您将得到类似03 + 03 = 0303的内容。

考虑到你的字段被称为Id我认为它被用作主键,并且最佳实践建议主键字段是int(bigint ...)数据类型,或者需要guid,所以不是字符串类型

因此,除非您确实希望033不同并返回不同的结果,否则您应该将表格中id字段的数据类型更改为int,并且也将SP中的输入参数更改为int。

alter PROCEDURE [dbo].GetCountofdata 
    (@Num int) 
AS
...