SQLite: ketma-ketlikda o'nli kasrsiz Alfa-numerik yozuvlarni tanlang

Bir qator alfanumerik kodlar va tavsiflarni o'z ichiga olgan SQLite JB bor. Har ikkala maydon ham matn hisoblanadi. Kodlash formati bitta alfavit belgisidir, keyin 2-raqamli raqamli qiymat - bu ota-ona. Ko'pgina ota-toifalar sub-elementlarga ega - bu kod o'nli kasr bilan va keyin alfanumerik qiymat bilan uzaytiriladi ... shuning uchun:

A01 - bu ota-ona

A01.10 - bu subtitma

Hech qanday sub-elementlar bo'lmagan kodlarni SELECT istayman ... Bu jadvalda 80000 ta yozuv mavjud, shuning uchun uni qo'lda kiritish ideal emas;)

Shunday qilib, [a] [n] [n] kodi mavjud va [a] [n] [n].% Mavjud emas.

TABLE "Shartlar" deb nomlanadi va Kod maydoni tasodifan Code

TIA

1

1 javoblar

Stringni qayta ishlash SQLite ning kuchli nuqtasi emas, lekin siz buni biroz yumaloq shaklda bajarasiz deb o'ylayman:

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

Fikr avval qanday kodlarning pastki elementlarga ega ekanligini aniqlash va keyin ularni chiqarib tashlashdir.

Ushbu ma'lumotlarni hisobga olgan holda:

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

So'ngra, bu so'rov quyidagini beradi:

id | code
2  | a02
0
qo'shib qo'ydi
juda yaxshi. rahmat!
qo'shib qo'ydi muallif Mike, manba