[mysql] selecteren wat begint met 2 getallen

Pagina: 1
Acties:

  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

Topicstarter
Ik wil rows kunnen selecteren die beginnen met 2 willekeurige getallen, dus bijvoorbeeld '00%' '01%' '02% '03%' .. uiteindelijk zijn er natuurlijk 10 X 10 mogelijkheden, en ik wil niet voor elke mogelijkheid deze concreet in mijn query stoppen tot ik een hele lange query krijg:

SELECT * FROM table WHERE collumn LIKE '00%' OR LIKE '01%' OR LIKE '02%' ... OR LIKE '99%'

ik vraag me af of er een betere oplossing is hiervoor, bijvoorbeeld, een wildcard om die getallen mee te kunnen veranderen

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Je zou in je programmeeromgeving die query op kunnen bouwen middels een simpel loopje, maar gezien de inhoud van dat veld ruik ik een slecht datamodel. Wat sla je in die kolom op?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

WHERE column BETWEEN '00' AND '99\0'

werkt daar geloof ik bij... Maar het kan zijn dat die \0 er juist voor zorgt dat je van 00 tot 98 krijgt en je juist "9 + 1" moet hebben (9a\0 ?)

Een andere mogelijkheid is om het eerste karakter (substring) te nemen en te testen of date between '0' and '9' is en datzelfde voor het tweede getal. Bovenstaande conditie kan echter een index gebruiken...

[ Voor 37% gewijzigd door ACM op 23-11-2004 20:58 ]


  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

Topicstarter
het zit zo

ik heb een database met 8000 artiesten, die wil ik via een archief pagina oproepen (http://www.hotlyrics.net/hotlyrics_new/archive.php3)

behalve dat gebruikers aan de hand van de eerste letter een artiest kunnen vinden, wil ik vanwege de grote hoeveelheid van artiesten dat zij nog een letter in kunnen voeren

uiteraard beginnen sommige artiesten ook met een cijfer, en sommige zelfs met 2 cijfers, hier wil ik ook op kunnen archiveren/zoeken

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

welkom bij reguliere expressies in MYSQL :P
code:
1
select column REGEXP '^[[:digit:]]{2}'

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

dusty schreef op dinsdag 23 november 2004 @ 20:57:
welkom bij reguliere expressies in MYSQL :P
code:
1
select column REGEXP '^[[:digit:]]{2}'
Maakt die gebruik van indices?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Geloof dat hij juist wel van indices gebruikt maakt ( als de column daarvoor gedefinieerd is uiteraard..) maar de enige reden dat ie dat doet is vanwege de ^ aan de voorkant, omdat je in de expressie te kennen geeft dat het ermee moet beginnen.

Persoonlijk zou ik nooit reguliere expressies binnen mysql gebruiken, maar dat is mijn persoonlijke mening :P (voeg hier uw eigen random belediging naar MYSQL in. )

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 13:54
Ook hier weet ik niet precies hoe het met MySQL is, maar onder MS-SQL werkt het volgende:
SQL:
1
SELECT * FROM table WHERE column LIKE '[0123456789][0123456789]%'

  • Haploid
  • Registratie: Maart 2002
  • Laatst online: 29-12-2021

Haploid

Doh!

Gelijkwaardig, maar net ietsje korter. ;)

SQL:
1
SELECT * FROM table WHERE column LIKE '[0-9][0-9]%'

En ja, dat werkt onder MySQL.

[ Voor 17% gewijzigd door Haploid op 23-11-2004 21:29 ]

Hey, I came here to be drugged, electrocuted and probed, not insulted.


  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

Topicstarter
Haploid schreef op dinsdag 23 november 2004 @ 21:29:
Gelijkwaardig, maar net ietsje korter. ;)

SQL:
1
SELECT * FROM table WHERE column LIKE '[0-9][0-9]%'

En ja, dat werkt onder MySQL.
hmm.. bij mij werkt dit kennelijk niet..

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

En die van dusty dan? Die zou wel moeten werken. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Haploid schreef op dinsdag 23 november 2004 @ 21:29:
Gelijkwaardig, maar net ietsje korter. ;)

SQL:
1
SELECT * FROM table WHERE column LIKE '[0-9][0-9]%'

En ja, dat werkt onder MySQL.
Wow, ik wist iig niet dat je in LIKE regexp kan gebruiken...

  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

Topicstarter
jippie =) beide manieren werken prima!

thnx
Pagina: 1