sql - 使用 BETWEEN 和 WILDCARD 的解决方法
问题描述
我有一个相当大的表,其中包含 ICD10 代码 ( icd10_table
)。我想根据范围提取一堆不同的 ICD10 代码(code
)。简而言之,有些父级 ICD10 代码具有“子级”,可以非常广泛。例如:ICD10 'M04'可以包括'M041'、'M045'、'M04679'、'M04000'、'M04999'等等。这里真的没有模式,查找和找出每一个组合非常耗时。在正常情况下,像这样带有通配符的简单查询会提取我需要的所有内容:
SELECT *
FROM icd10_table
WHERE code LIKE 'M04%'
但是,我正在尝试提取特定 ICD10 代码的范围,并尝试执行以下操作:
SELECT *
FROM icd10_table
WHERE code BETWEEN 'M00' AND 'M02%'
OR code BETWEEN 'M04' AND 'M04%'
OR code BETWEEN 'M05' AND 'M14%'
OR code BETWEEN 'M15' AND 'M19%'
但这只是切断了子 ICD10,实际上并没有应用通配符。使用 BETWEEN 和通配符将每个父/子 ICD10 拉到范围内的好解决方法是什么?
解决方案
尝试这样的事情:
SELECT *
FROM icd10_table
WHERE code >= 'M00' AND code < 'M02' OR
code >= 'M04' AND code < 'M05' OR
code >= 'M05' AND code < 'M15' OR
code >= 'M15' AND code < 'M20'
您的公式'%'
的 ASCII 值小于任何数字,因此它有效地切断了比较。
推荐阅读
- python-3.x - 芹菜_1 | ImportError:没有名为“hh_ru_django”的模块
- here-api - 如何在 Here iOS SDK 高级版的 API 文档中进行文本搜索?
- reactjs - 我无法从终端创建新的 React 应用程序
- css - 绝对位置隐藏内容
- typescript - 用于排序数组的通用函数
- azure - 从 Visual Studio (NuGet) 连接到 Azure DevOps 工件
- c# - DataAdapter.Fill 返回行数,但 Rows.List 为空
- php - 允许一起应用一些设置为“个人使用”的 WooCommerce 优惠券
- linux - 当月份的日期在 10 号之前时,无法设置 unix 时间戳值
- python-3.x - 如何使用 fastapi 日志记录捕获 X-Forwarded-For?