我想确保我没有在表格中插入重复的行(例如,只有主键不同).我的所有字段都允许NULLS,因为我已经确定null表示"所有值".由于null,我的存储过程中的以下语句不起作用:
IF EXISTS(SELECT * FROM MY_TABLE WHERE
MY_FIELD1 = @IN_MY_FIELD1 AND
MY_FIELD2 = @IN_MY_FIELD2 AND
MY_FIELD3 = @IN_MY_FIELD3 AND
MY_FIELD4 = @IN_MY_FIELD4 AND
MY_FIELD5 = @IN_MY_FIELD5 AND
MY_FIELD6 = @IN_MY_FIELD6)
BEGIN
goto on_duplicate
END
Run Code Online (Sandbox Code Playgroud)
因为NULL = NULL不是真的.
如何在没有每列的IF IS NULL语句的情况下检查重复项?
如何重写包含SQL实现中的标准IS DISTINCT FROM和IS NOT DISTINCT FROM运算符的表达式,例如不支持它们的Microsoft SQL Server 2008R2?