SQLite: выберите буквенно-цифровые записи без десятичной дроби в следующей строке - PullRequest
1 голос
/ 28 октября 2011

У меня есть БД SQLite, состоящая из серии буквенно-цифровых кодов и описаний.Оба поля являются текстовыми.Формат кодирования представляет собой один алфавитный символ, за которым следует двузначное числовое значение - это родительская категория.Многие родительские категории имеют подпункты - где код расширяется десятичным, а затем буквенно-цифровым значением ... так:

A01 - родительская категория

A01.10 - подпункт

Я бы хотел SELECT коды, в которых нет подпунктов ... В этой таблице 80000 записей, поэтому проходить ее вручную не идеально;)

ИтакКритерии включения: где код [an] [n] [n] существует и [an] [n] [n].% не существует ... Любые идеи / рекомендации приветствуются:)

TABLE называется «Условия», а поле «Код» образно называется Code

TIA

1 Ответ

0 голосов
/ 28 октября 2011

Строковая обработка не является сильной стороной SQLite, но я думаю, что вы делаете это немного округлым образом:

select *
from terms
where code not like '%.%'
  and code not in (
    select rtrim(rtrim(code, '1234567890'), '.')
    from terms
    where code like '%.%'
);

Идея состоит в том, чтобы сначала выяснить, какие коды имеют подпункты, а затем исключить их.

Учитывая эти данные:

id | code
 1 | a01
 2 | a02
 3 | a03
 4 | a03.1
 5 | a03.2
 6 | a01.1

Тогда этот запрос дает вам следующее:

id | code
2  | a02
...