【发布时间】:2017-03-29 15:08:42
【问题描述】:
我有一个包含患者 ID 的列,该 ID 的末尾有诊所后缀:
[Client Number]
29848393Ch
我运行一个审计脚本来计算这些带有过去的诊所后缀:
SELECT COUNT(Client.[Client Number]) AS Count
FROM Client where [client number] like N'%' + @suffix
我们现在正在使用导致查询出现问题的三位数后缀。
[Client Number]
29848393QCh
有没有办法选择一个传递后缀的计数并让它严格只返回包含 Ch 而不是 QCh 的结果?
【问题讨论】:
-
where right([client number],2) = 'Ch'或者您可以设置类似于function based index 的computed column 并使用正确的2 个字符并受其限制。从性能的角度来看,使用 2 个字符的权利的计算列似乎是要走的路。也许 2 人一份,3 人一份…… -
我认为你应该使用 RIGHT() 而不是 - 应该更快,需要我发布代码吗?
-
刚刚看到 xQbert 的评论——他是对的。您还可以在某些平台上的 RIGHT(x,2) 上设置索引。
-
我认为我们还需要检查以确保右侧第三个最多的字符不是“Q”;但我不确定它是否总是 Q 或其他值。请注意,当右侧第三个字符中有 Q 时,计算列可能为 NULL。同样,上下文不够清楚,这就是为什么这是评论而不是答案。
标签: sql sql-server tsql select