我在一个函数中使用了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
请把我从痛苦中解脱出来......
答案 0 :(得分:0)
这是一个错字,我在一天中最好的时候看过......