Sql server 正在从存储过程中丢失前导0
我试图从城市和州值中获得正确的邮政编码。但我失去了邮政编码 范例Sql server 正在从存储过程中丢失前导0,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我试图从城市和州值中获得正确的邮政编码。但我失去了邮政编码 范例 create procedure sp_getCorrectvalue as Begin declare @value as nvarchar(5) set @value = '00254' return @value End declare @getValue as nvarchar(5) Exec @getValue = sp_getCorrectvalue select @getValue a
create procedure sp_getCorrectvalue
as
Begin
declare @value as nvarchar(5)
set @value = '00254'
return @value
End
declare @getValue as nvarchar(5)
Exec @getValue = sp_getCorrectvalue
select @getValue as zipCode
它应该返回00254,但返回254,这是不正确的
请帮忙
谢谢,过程的返回值只能是int,因此在返回时会进行转换。要返回字符串,您需要在结果或输出参数中返回它。您应该创建一个函数
CREATE FUNCTION fn_getCorrectvalue()
RETURNS NVARCHAR(5)
AS
BEGIN
declare @value as nvarchar(5)
set @value = '00254'
return @value
END
演示
存储过程返回一个整数
存储过程可以向调用过程或应用程序返回整数值
实际上,我在Mysql中遇到了类似的问题 我有一个存储过程,它在Char8中接受一个学生ID。如果ID为“00002563”且具有as Out,则为VarChar 如果我传入'00002563'并将其传递给put参数。。。如果get在varchar中是'2563' 该程序的初衷是让学生输入他们的ID,并让程序进行处理,确定他们指定的宿舍和房间号(如果找到)
它们都找不到。我怀疑原因是varchar正在转换为INT。为什么要为Oracle和MySQL标记这个?这似乎是一个特定于SQL Server的问题,除非我遗漏了什么…请不要使用不适用于您的问题的标记我向John道歉,但添加这些标记的目的是,如果他们知道,也可以回答这个问题。为此你不需要投票。如果你知道答案,你可以回答它,而不是看一大堆问题。这些标签与这个问题有关。这是常见的数据库问题。阿比,不管你为什么这么做,这都不是在这个网站上获得帮助的正确方式。这是常见的数据库问题。我是新的数据库和编码只是需要帮助,如果你有一个问题,但没有在这里回答,请张贴一个新的问题。如果需要引用,可以在新问题中链接到此问题。