Tsql 在案例陈述评估中检测未预期的值

Tsql 在案例陈述评估中检测未预期的值,tsql,Tsql,T-SQL中是否有方法收集案例条件中所有未考虑的值并将其插入表中 例如: 读取Col1中包含值A、B、C的表的选择。此选择的情况如下:CASE当Col1=1时,则。。。当Col1=B时,则。。。ELSE NULL以NewCol1结尾 我想检测像C这样的值,Col1中没有考虑到的值。 我可以这样得到它们:(…)ELSE Tabl1.Col1,但我需要CASE语句以ELSE NULL结尾 您可以得到如下这些值的列表: SELECT DISTINCT Col1 FROM Table WHERE Col

T-SQL中是否有方法收集案例条件中所有未考虑的值并将其插入表中

例如:

读取Col1中包含值A、B、C的表的选择。此选择的情况如下:
CASE当Col1=1时,则。。。当Col1=B时,则。。。ELSE NULL以NewCol1结尾

我想检测像C这样的值,Col1中没有考虑到的值。
我可以这样得到它们:
(…)ELSE Tabl1.Col1
,但我需要CASE语句以
ELSE NULL
结尾

您可以得到如下这些值的列表:

SELECT DISTINCT Col1
FROM Table
WHERE Col1 not in (1,...,B)

正如@avery_larry所建议的,我使用了一个调试标志,为我的查询提供了两种行为。我可以调用一个带有参数的函数/存储,如果它已启动,则将值插入所需的输出。

谢谢您的回答。是的,这样做就可以了,但这意味着要从主查询中复制案例评估值,这在更新时很难实现。我知道这是一个很难解决的问题。。。谢谢您的时间。我不明白您如何希望case语句以else null结尾,但同时还需要其他值。这就像说你想要1=0,我知道。这不是我的要求,而是来自一个希望以这种方式跟踪意外输入值的客户。。我建议他们使用GROUPBY查询表,并获取所有可能的输入组合及其各自的“转换”值。然后。。当转换为NULL或其他内容时。。您知道,这种特定的输入组合是不可预期的。您应该定期运行此查询。但他们发现这个解决方案太难解释了。我正试图找到一种更易于重新定义的格式。。但是我什么也没想到。你能把原来的Col1添加到select语句中吗?然后,当NewCol1为null时,您可以看到原始Col1值是什么(was?)。但是他们不喜欢。另外,这意味着创建一个单独的查询来检查每个CASE语句的输入。。我们有很多表…也许是调试风格的标志
declare@debug=1
then
Col1=1时的情况,然后。。。当@debug=1时,则为Col1 ELSE NULL end
。您可以使用@debug“标志翻转行为。