【问题标题】:Keep records that match variable length codes保留与可变长度代码匹配的记录
【发布时间】:2022-08-15 08:41:21
【问题描述】:

此问题源于使用 ICD-9 和 ICD-10 分类代码。

给定一组可变长度的代码前缀,从表中返回与这些代码匹配的所有记录。假设代码列表足够长,可以存储在查找表中。

例如:

code_prefixes char_length
   A12          3
   B123         4

我天真的方法是使用SUBSTRING 并列出每个不同的长度,如下所示:

SELECT *
FROM main_table
WHERE SUBSTRING(code, 1, 3) IN (SELECT code_prefix FROM lookup_table WHERE char_length = 3)
OR SUBSTRING(code, 1, 4) IN (SELECT code_prefix FROM lookup_table WHERE char_length = 4)

但这需要对code_prefix 中的每个不同长度值进行复制,并且它假定char_length 总是正确的。

    标签: sql sql-server


    【解决方案1】:

    这是迄今为止我提出的最佳解决方案:

    SELECT *
    FROM main_table AS M
    WHERE EXISTS (
        SELECT 1
        FROM lookup_table AS L
        WHERE SUBSTRING(M.code, 1, LEN(L.code_prefix)) = L.code_prefix
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2018-02-22
      相关资源
      最近更新 更多