Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/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_Sql Server 2005 - Fatal编程技术网

Sql server SQL用户定义函数带大小写-请对其进行细化

Sql server SQL用户定义函数带大小写-请对其进行细化,sql-server,sql-server-2005,Sql Server,Sql Server 2005,你能建议我改进一下下面的问题吗 ALTER FUNCTION GetTemplate_Lookup_id(@pid int) RETURNS INT AS BEGIN DECLARE @Return int SELECT @Return= CASE @pid -- SOME OTHER Comment WHEN 208 THEN 4 WHEN 283 THEN 4 WHEN 402 THEN 4 WHEN

你能建议我改进一下下面的问题吗

 ALTER FUNCTION GetTemplate_Lookup_id(@pid int)
    RETURNS  INT
    AS
    BEGIN
    DECLARE @Return int
    SELECT @Return= CASE @pid
    -- SOME OTHER Comment
    WHEN 208 THEN  4
    WHEN 283 THEN  4
    WHEN 402 THEN  4
    WHEN 42 THEN  4

    --SOME OTHER Comment
    WHEN 211 THEN  3
    WHEN 286 THEN 3
    WHEN 399 THEN 3
    WHEN 45 THEN 3

    --SOME OTHER Comment
    WHEN 209 THEN 1
    WHEN 284 THEN 1
    WHEN 397 THEN 1
    WHEN 43 THEN 1

    --SOME Other Comment
    WHEN 210 THEN 2
    WHEN 285 THEN 2
    WHEN 398 THEN 2
    WHEN 44 THEN 2

    ELSE 0
    END
    RETURN @Return
    END

你不能用IN来把事情弄清楚吗

...
SELECT @Return= CASE 
WHEN @pid IN (208, 283, 402, 42) THEN  4
WHEN @pid IN (211, 286, 399, 45) THEN  3
...

您是否遇到性能问题?你有什么问题?在为每个类别设置的这些数字下是否有一些逻辑?也许你可以通过按位应用一些掩码来测试一个值,或者所有的数字都是幻数?也许你还没见过面。与堆栈溢出相比,它通常更适合于回答有关代码优化的问题。
...
SELECT @Return= CASE 
WHEN @pid IN (208, 283, 402, 42) THEN  4
WHEN @pid IN (211, 286, 399, 45) THEN  3
...