小编Sea*_* K.的帖子

部分唯一检查约束

我有一个正在迁移到 SQL Server 的旧 Access 表,其中有一个名为“LinkedID”的字段。这个字段在大约 5 年前大部分时间都没有使用,因此对于许多历史记录,它要么为空,要么默认为“00000000”。但是,展望未来,我们希望将其设置为不允许重复值(假设 1,000 条记录为空,500 条记录为“00000000”,大约 10,000 条是我们想要的实际唯一值)。

调查它,因为我有多个记录设置为“00000000”和多个为空,我知道我不能使用唯一约束。有没有一种方法可以创建一个检查约束来检查插入/更新的值是否唯一(如果不是全部为 0 或为空)?或者如果它不能通过检查约束工作,我的另一个想法是可能使用插入/更新触发器以某种方式验证数据?

sql-server constraint sql-server-2012 check-constraints

6
推荐指数
1
解决办法
899
查看次数

安装第二个 SQL 实例会导致现有实例中断吗?

正如标题所说,我只是想验证是否需要在已经有一个 SQL 实例的服务器上安装辅助 SQL 实例,安装辅助实例会导致第一个中断吗?

sql-server

4
推荐指数
1
解决办法
305
查看次数

嵌套 case 语句与多条件 case 语句

今天与一位同事就优化 case 语句进行了有趣的讨论,以及是否最好将具有重叠标准的 case 语句作为单独的 when 子句保留,或者为每个重叠语句创建一个嵌套的 case 语句。

例如,假设我们有一个包含 2 个整数字段的表,a 列和 b 列。这两个查询中的哪一个对处理器更友好?由于我们只使用嵌套语句评估 a=1 或 a=0 一次,这对处理器来说是否更有效,还是创建嵌套语句会消耗该优化?

case 语句的多个标准:

Select 
case 
    when a=1 and b=0 THEN 'True'
    when a=1 and b=1 then 'Trueish'
    when a=0 and b=0 then 'False'
    when a=0 and b=1 then 'Falseish'
    else null
end AS Result
FROM tableName
Run Code Online (Sandbox Code Playgroud)

嵌套 case 语句:

Select
case
    when a=1 then
        case 
            when b=0 then 'True'
            when b=1 then 'Trueish'
        end
    When a=0 then
        case
            when b=0 then 'False' …
Run Code Online (Sandbox Code Playgroud)

sql-server optimization

1
推荐指数
1
解决办法
4万
查看次数