Avatar billede krab Praktikant
09. august 2010 - 09:25 Der er 4 kommentarer og
1 løsning

Simpel SQL select med ilike

Hej,

Jeg skal lave et "simpelt" sql udtræk, men ved ikke lige hvordan det skal udføres..

Eksempel:

select number from table where number ilike '%65000000'
S8S65000000
265000000
765000000
0065000000

Jeg skal KUN bruge den sidste hvor der står - "0"er foran - 0065000000

Altså den skal kun matche såfremt der står "0" foran tallet..
Avatar billede ofrede Nybegynder
09. august 2010 - 09:43 #1
Hvad med følgende tilføjelse:

AND number LIKE '0%'
Avatar billede krab Praktikant
09. august 2010 - 10:06 #2
Ja, det kunne jeg muligvis godt bruge, men vil den så matche -

select number from table where number ilike '%EP44300000'

Hvor den gerne skulle matche 'EP44300000' i databasen (altså uden 0 foran)
Avatar billede ofrede Nybegynder
09. august 2010 - 11:46 #3
Nix!

Du bliver nødt til at analysere dine data og hvad det er du gerne vil have. Du skal så finde de fællesnævnere der er. Jeg kan godt gætte, men kender jo ikke dine krav.

Med de informationer jeg har nu, er mit gæt at du gerne vil have:
1: Alt hvad der er er lig dit number eller som har et (eller flere) nuller foran.

Hvordan bygger du din sql-sætning op? Sker det dynamisk fra et eller andet program? Og hvor mange tal/bogstaver kan dit number indeholde?

Hvis vi forudsætter at du opbygger din sætning dynamisk. Og at der maks kan være 12 karakterer i dit number. Og du vil søge på alt hvad der er lig dit number eller har foranstillede 0'er, så ville jeg lave en sql-søgning der så således ud:

SELECT number FROM table WHERE number = 'EP44300000' OR number = '0EP44300000' OR number = '00EP44300000'

(jeg ville tælle antallet af karakterer i det "number" jeg søger på og blive ved at indsætte en "OR number = 'xxxx'" i min WHERE clausul, indtil jeg når det max antal karakterer der kan være i number. Dog vil jeg være betænkelig, hvis number kan indeholde fx 256 karakterer!).

Det er muligt at du har andre/flere krav end dem jeg har gættet mig til...

Som et alternativ, kan du også bare trække alle rækker ud som i din originale SQL-klausul (altså WHERE number LIKE '%EP44300000') og så lade din applikation frasortere de rækker der ikke er relevante...

Håber det kan sparke dig lidt i den rigtige retning.
Avatar billede krab Praktikant
09. august 2010 - 14:26 #4
Hej ofrede, tak for hjælpen, du gav mig et skub i den rigtige retning, og jeg fandt selv en løsning ;) .. Noget lin. den du selv kom med -

SELECT number FROM table WHERE number = 'EP44300000' OR number = '0EP44300000' OR number = '00EP44300000'

Tak for det.
Avatar billede ofrede Nybegynder
09. august 2010 - 15:47 #5
Velbekomme ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester