因此,FIELD2 可以根据 Mycondition 的值返回 2 组字段连接为单个结果。
我的问题仅在 Mycondition = 1 时出现
如果 MyCondition = 1,那么我需要连接 INT_FIELD_ONE + 'A' + INT_FIELD_TWO。
串联不是问题。
问题是如果 INT_FIELD_ONE(为空)+ 'A' + INT_FIELD_TWO(为空),那么我必须返回任何内容。
如果字段 ONE 和 TWO 都为空,我的替换命令将起作用。但如果只有 1 个为 NULL 而另一个不是“A”,则无论如何都会被删除。如果 1 个字段不为空,则需要保留 A。
例如:
NULL + 'A' + NULL = 无
NULL + 'A' + xxxx = Axxxx
xxxx + 'A' + NULL = xxxxA
因此我需要使用结果长度约束> 1 的 TSQL 替换
有什么想法吗?
SELECT XXX,
CASE --Case Statement to Return Field2
WHEN MyCondition = 1 THEN
--Constraint on the Replace Starts Here
REPLACE(
Isnull(CAST(INT_FIELD_ONE AS VARCHAR), '') + 'A' +
Isnull(CAST(INT_FIELD_TWO AS
VARCHAR), '')
,'A','')
ELSE
REPLACE(
Coalesce(REPLACE(INT_FIELD_THREE, '', '-'), Isnull(INT_FIELD_THREE, '-'), INT_FIELD_THREE) +
' / ' + Coalesce(REPLACE(INT_FIELD_FOUR, '', '-'),
Isnull(INT_FIELD_FOUR, '-'), INT_FIELD_FOUR) + ' ', '- / - ',
'')
END
AS FIELD2
FROM TABLEX
最佳答案
这个怎么样?
CASE WHEN MyCondition = 1 AND (INT_FIELD_ONE IS NOT NULL OR INT_FIELD_TWO IS NOT NULL) THEN concat..
WHEN MyCondition = 1 THEN NULL -- at that point we know that both are null
ELSE ... END
请注意,现在在执行连接时不需要 REPLACE 函数,因为您确定其中一个字段不为空
关于sql - TSQL 替换为长度约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8765534/