Toon posts:

[MYSQL] Between X0000 AND X9999

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een database tabel gemaakt met artikelen en artikelnummer. De artikelnummers lopen van 00000 tot 99999. En X0000 tot X9999. Nu wil ik een selectie maken van een groep van artikelen. Alles tussen 50000 en 65000 is al gelukt, zie:

SELECT * from artikelen WHERE artikelnummer BETWEEN 50000 AND 65000;

Echter nu wil ik daar de selectie toevoegen vanX5000 en X6500, maar die werkt dus niet:

SELECT * from artikelen WHERE (artikelnummer BETWEEN 50000 AND 65000) AND (artikelnummer BETWEEN X5000 AND X6500;

Zal uiteraard wil een integer moeten zijn, maar kan iemand mij een tip geven hoe ik dit het beste kan met een alfanumeriek getal.

Acties:
  • +1 Henk 'm!

  • Quantor
  • Registratie: September 2000
  • Niet online
OR ipv AND

Uitleg: een artikel nummer kan niet EN tussen 50000-65000 liggen EN tussen X5000-X9999 liggen

[ Voor 82% gewijzigd door Quantor op 28-11-2016 10:27 ]


Acties:
  • 0 Henk 'm!

  • Wasp
  • Registratie: Maart 2001
  • Laatst online: 22:59
Betekent die 'X' iets functioneels? Zo ja, dan zou ik daar een apart veld voor definiëren en het artikelnummer zuiver houden. Dan hoef je ook niet ingewikkeld te gaan doen tijdens het uitvragen.

De "business key" wordt dan wel waarschijnlijk artikel_nummer + artikel_variant (oid).

Ryzen 9 5900X, MSI Tomahawk MAX, 32GB RAM, Nvidia RTX 4070 Ti | Mijn livesets


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Quantor schreef op maandag 28 november 2016 @ 10:26:
OR ipv AND

Uitleg: een artikel nummer kan niet EN tussen 50000-65000 liggen EN tussen X5000-X9999 liggen
^^ Dat.

Los daarvan: als je artikelnummer-veld een (var)char o.i.d. is (en dat is het als er een "X...." in staat) dan dien je in beide gevallen quotes rond de argumenten van BETWEEN te zetten. Dus niet between 123 and 456 ... or between x123 and x456 maar between '123' and '456' ... or between 'x123' and 'x456'

[ Voor 5% gewijzigd door RobIII op 28-11-2016 10:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het ligt er natuurlijk wel een beetje aan wat er exact allemaal voorkomt in je artikelnummer, maar werkt

BETWEEN 'X5000' AND 'X6500' niet gewoon? Eventueel moet je nog filteren op items die een artikelnummer hebben die niet in het juiste formaat zijn. Ook is het wat lastiger als je waardes niet altijd even veel cijfers hebben. Je zou dan kunnen werken met een split en een convert to int.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Quantor
  • Registratie: September 2000
  • Niet online
RobIII schreef op maandag 28 november 2016 @ 10:39:
[...]

^^ Dat.

Los daarvan: als je artikelnummer-veld een (var)char o.i.d. is (en dat is het als er een "X...." in staat) dan dien je in beide gevallen quotes rond de argumenten van BETWEEN te zetten. Dus niet between 123 and 456 ... or between x123 and x456 maar between '123' and '456' ... or between 'x123' and 'x456'
Klopt, maar ik nam aan dat het hoofdprobleem in de AND zat, de vergeten quotes zullen (neem ik aan, werk niet met MySQL) wel een foutmelding als resultaat hebben, die duidelijk genoeg is om dat zelf op te lossen.

dsnl1980, probeer dit eens:

SELECT * from artikelen WHERE (artikelnummer BETWEEN 50000 AND 65000) OR (artikelnummer BETWEEN 'X5000' AND 'X6500');

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanks Quantor en de rest, de BETWEEN 'X5000' AND 'X6500' werkt inderdaad en heb de rest ook maar gelijk tussen ' gezet.
Pagina: 1