SQL Server模数和用户定义的函数

时间:2012-02-21 13:50:16

标签: sql

我在一个函数中使用了Modulus%,它的行为并不像我期望的那样:

drop function af_EmployeeName
go

Create function [dbo].[af_EmployeeName]    
(  
@ParamName VARCHAR(512)
, @ParamRef1 VARCHAR(64)
, @ParamRef2 VARCHAR(64)
, @ParamRef3 VARCHAR(64)
, @ParamRef VARCHAR(64)
, @ParamNI VARCHAR(64)
, @ParamIsEmplRef INT
)  
RETURNS VARCHAR(1100)
AS 
BEGIN  

RETURN  

COALESCE(@ParamName, '')

+ CASE 
    WHEN @ParamIsEmplRef <> 0 THEN
        ': '
    ELSE
        ''
    END

+ CASE 
    WHEN @ParamIsEmplRef&2 <> 0  THEN --1
        COALESCE(@ParamRef1 , '') + ', '
    ELSE
        ''
    END
 END

GO

SELECT dbo.af_EmployeeName('Name','ref1','ref2','ref3', 'payref', 'ni', 0) [0]
    , dbo.af_EmployeeName('Name','ref1','ref2','ref3', 'payref', 'ni', 1) [1]
    , dbo.af_EmployeeName('Name','ref1','ref2','ref3', 'payref', 'ni', 2) [2]

我得到的是

0 1 2 名称:名称:ref1,

我希望是

0 1 2 名称:ref1,名称:ref2,

基于

SELECT 0%2 [0],  1%2 [1], 2%2 [2]

0 1 2 0 1 0

请把我从痛苦中解脱出来......

1 个答案:

答案 0 :(得分:0)

这是一个错字,我在一天中最好的时候看过......