Обходной путь для использования МЕЖДУ и УИЛКАРДОМ - PullRequest
0 голосов
/ 23 октября 2019

У меня довольно большая таблица, которая содержит коды 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 в диапазон?

1 Ответ

1 голос
/ 23 октября 2019

Попробуйте что-то вроде этого:

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 которого меньше любой цифры, поэтому оно эффективно обрезает сравнение.

...