我在t-sql中有一个奇怪的行为。给以下测试奇怪的行为:T-sql字符/字符串连接char
DECLARE @a char(22) = 'John went to buy a car', @b char(15)= 'Tom went to pub';
SELECT IIF(1=1 , @a, @b)+'. He met a friend';
输出正常: 约翰去买车。他认识了一位朋友。
SELECT IIF(1=2 , @a, @b)+'. He met a friend';
输出错误:
Tom went to pub . He met a friend.
变量字符的串联分配22个字符,如果测试结果为真,和22个字符,否则!因此,在通过IIF进行字符串连接(但与CASE相同)的情况下,输出将分配给第一个表达式(@b变量被认为是22个字符!)任何想法?
谢谢!这是一个很好的答案。 – user1732337