Sql server 2005 SQL Server 2005我无法从表中读取数据

Sql server 2005 SQL Server 2005我无法从表中读取数据,sql-server-2005,Sql Server 2005,请假设在SQL Server 2005中,如果启动以下查询: SELECT CHICKEN_CODE FROM ALL_CHICKENS WHERE MY_PARAMETER = 'N123123123'; SELECT DBO.determines_chicken_code('N123123123') 您获得: 31 结果呢 现在,我想写一个函数,给我的_参数一个值,它会产生相应的CHICKEN_代码值,可以在表ALL_fickets中找到 我在SQL Server 2005中编写了以

请假设在SQL Server 2005中,如果启动以下查询:

SELECT CHICKEN_CODE FROM ALL_CHICKENS WHERE MY_PARAMETER = 'N123123123';
SELECT DBO.determines_chicken_code('N123123123') 
您获得:

31
结果呢

现在,我想写一个函数,给我的_参数一个值,它会产生相应的CHICKEN_代码值,可以在表ALL_fickets中找到

我在SQL Server 2005中编写了以下存储函数:

ALTER FUNCTION [dbo].[determines_chicken_code]
(
    @input_parameter                         VARCHAR 
)
RETURNS varchar
AS 
BEGIN
    DECLARE @myresult varchar

    SELECT @myresult  =  CHICKEN_CODE
    FROM dbo.ALL_CHICKENS
    WHERE MY_PARAMETER = @input_parameter

    RETURN @myresult
END
但如果我启动以下查询:

SELECT CHICKEN_CODE FROM ALL_CHICKENS WHERE MY_PARAMETER = 'N123123123';
SELECT DBO.determines_chicken_code('N123123123') 
它产生:

NULL
为什么?


提前感谢您的友好合作。

像这样定义varchar变量的长度

varchar(100)

如果没有100或您选择的任何长度,其长度为1,where子句将过滤掉正确的结果。

为您的varchar指定一个长度,例如:varchar100。如果没有长度,varchar=1个字符。

根据其他PS,您只能在@myresult中存储一个字符,因为您没有指定任何长度,所以varchar数据类型的默认长度为bcoz 1个字符

为什么我们得到的是NUll,而不是第一个字符:

如果根据ALL_CHIGKS表中的Where子句筛选了多条记录,则会从ALL_CHIGKS表中的最后一行提取CHICKEN_CODE列的值


最后一行在CHICKEN_CODE列中似乎有空值。

为@input_参数指定一个长度,@myresult默认为varchar lengh为1。

非常感谢,您太棒了-