我有一个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这样的值(创建表时的任何特殊脚本)
我怎样才能做到这一点?
答案 0 :(得分:0)
你试过垫了吗? 这是Sql Server中的一个链接:http://www.tech-recipes.com/rx/30469/sql-server-how-to-left-pad-a-number-with-zeros/
答案 1 :(得分:0)
在SQL(与许多其他语言一样)中存储03
和3
等数据需要不同的数据类型,因此对于03
,您将使用varchar(或类似)数据类型它基本上存储字符串并将存储在其中的数据视为字符串,而不管它是否包含数字。对这些数据使用关节运算时,您将得到类似03 + 03 = 0303
的内容。
考虑到你的字段被称为Id
我认为它被用作主键,并且最佳实践建议主键字段是int(bigint ...)数据类型,或者需要guid,所以不是字符串类型
因此,除非您确实希望03
和3
不同并返回不同的结果,否则您应该将表格中id
字段的数据类型更改为int
,并且也将SP中的输入参数更改为int。
alter PROCEDURE [dbo].GetCountofdata
(@Num int)
AS
...