在有人抱怨该表应该被规范化、最佳实践等之前。我要承认这是我们在 SQL Server 2008 R2 中拥有的旧表,我对更改它无能为力。话虽如此,该表具有以下列:
"PreparedBy", "PrelimApprovalBy", "Approval1Signer", "Approval2Signer"
所有这些字段都有用户名或 NULL 或 ''。我想获取在上面提到的 2 个或更多字段中出现相同用户名的所有行。如果 2 个字段为 NULL,则它们不是匹配项,如果它们都是 '',则它们不是匹配项。所以 NULL 和 '' 都需要被排除,因为它们没有任何意义。
这是我到目前为止的想法,但我不喜欢它:
我正在考虑通过执行以下操作来检查 WHERE 子句中的所有排列(检查 NULL 和 '')
WHERE PreparedBy = PrelimApprovalBy OR PreparedBy = Approval1Signer OR ...
必须有更好的方法来做到这一点。