|
| Søgning i MySQL uden mellemrum Fra : Thïngmand |
Dato : 24-11-00 10:06 |
|
Jeg har en database hvor jeg skal søge efter varenumre - et varenummer kunne
se således ud:
123 456 7890
Problemet er at der hersker stor tvivl hos vores brugere, om hvor
mellemrummene skal være henne. I vores gamle flat-file system fjernede jeg
mellemrummene i søgeordet, hentede en linie fra filen og fjernede
mellemrumene fra denne og samlignede disse - men hvordan får jeg den samme
funktion med PHP og MySQL?
| |
N/A (24-11-2000)
| Kommentar Fra : N/A |
Dato : 24-11-00 16:08 |
|
| |
Andreas Svendsen (24-11-2000)
| Kommentar Fra : Andreas Svendsen |
Dato : 24-11-00 16:08 |
|
Johan <webmaster@ru94.dk> skrev i en
news:knqT5.7409$zs.232779@twister.sunsite.auc.dk...
>
> $newvarenr = ereg_replace(" ", "", $indtastetvarenr);
str_replace() er at fortrække her, af performancemæssige grunde.
http://php.net/str_replace
--
mvh
Andreas Kleist Svendsen
andreas_k_s(at)hotmail.com
http://www.whitehat.dk/nautilus/
| |
Johan (24-11-2000)
| Kommentar Fra : Johan |
Dato : 24-11-00 16:14 |
|
> > $newvarenr = ereg_replace(" ", "", $indtastetvarenr);
>
> str_replace() er at fortrække her, af performancemæssige grunde.
Det betyder nu minimal meget i denne sammenhæng. Tror ikke det vil være den
store forskel, når det drejer sig om en streng på mindre end 15 tegn. Så
tror det er en form for flueknepperi Men right, du har ret. Men som sagt
begge kan bruges, og der er så godt som at sige ingen forskel i dette
tilfælde...
mvh
Johan
| |
N/A (25-11-2000)
| Kommentar Fra : N/A |
Dato : 25-11-00 17:10 |
|
| |
Jonathan Stein (25-11-2000)
| Kommentar Fra : Jonathan Stein |
Dato : 25-11-00 17:10 |
|
"Thïngmand" wrote:
> > Kan det bruges?!
>
> Nej desværre. Der er forskellige slags varenumre i databasen. Det jeg ledte
> efter var en mulighed for at få MySQL til at ignorere mellemrummene i en
> søgning...
Selv om du skulle få MySQL overtalt til at lave søgningen, vil den være
langsom, og det vil være svært/umuligt at lave fornuftige index'er. Et
alternativ kunne være at vedligeholde et ekstra felt med varenummeret renset
for mellemrum.
M.v.h.
Jonathan
| |
Mads Lie Jensen (25-11-2000)
| Kommentar Fra : Mads Lie Jensen |
Dato : 25-11-00 17:28 |
|
On Sat, 25 Nov 2000 16:37:25 +0100, "Thïngmand" <michael@thingmand.dk>
wrote:
>> Kan det bruges?!
>
>Nej desværre. Der er forskellige slags varenumre i databasen. Det jeg ledte
>efter var en mulighed for at få MySQL til at ignorere mellemrummene i en
>søgning...
mySQL har en REPLACE()-funktion, mon ikke den kan bruges?
SELECT * FROM varer WHERE REPLACE(varenummer, ' ', '') =
REPLACE(varenummer_der_søges_efter, ' ', '');
--
Mads Lie Jensen
Mads@gartneriet.dk
ICQ #25478403
http://www.gartneriet.dk
| |
Thïngmand (25-11-2000)
| Kommentar Fra : Thïngmand |
Dato : 25-11-00 18:29 |
|
> mySQL har en REPLACE()-funktion, mon ikke den kan bruges?
>
> SELECT * FROM varer WHERE REPLACE(varenummer, ' ', '') =
> REPLACE(varenummer_der_søges_efter, ' ', '');
DET VIRKER!!!
Jeg har kørt et pat test og det ser ud til at virke - en million gange tak!
Det var lige præcis sådan en funktion jeg ledte efter - jeg har ledt
dokumention igennem på kryds og tværs uden at finde noget brugbart.
Også tak til Jonathan for den alternative løsning (meget logisk løsning -
den havde dog slet ikke strejfet min hoved!)
| |
Thomas L. Kjeldsen (28-11-2000)
| Kommentar Fra : Thomas L. Kjeldsen |
Dato : 28-11-00 05:53 |
|
On Fri, 24 Nov 2000 10:06:12 +0100, "Thïngmand" <michael@thingmand.dk>
wrote:
>mellemrummene skal være henne. I vores gamle flat-file system fjernede jeg
>mellemrummene i søgeordet, hentede en linie fra filen og fjernede
>mellemrumene fra denne og samlignede disse - men hvordan får jeg den samme
>funktion med PHP og MySQL?
Er det en umulighed at fjerne mellemrummene i databasen?
--
Med venlig hilsen Thomas L. Kjeldsen
http://netlunden.dk/thomas/
| |
N/A (02-12-2000)
| Kommentar Fra : N/A |
Dato : 02-12-00 02:14 |
|
| |
Nis Jørgensen (02-12-2000)
| Kommentar Fra : Nis Jørgensen |
Dato : 02-12-00 02:14 |
|
On Tue, 28 Nov 2000 09:47:44 +0100, "Thïngmand" <michael@thingmand.dk> wrote:
>> Er det en umulighed at fjerne mellemrummene i databasen?
>
>Næ, men de skal jo stadig vises korrekt (med mellemrum) når de bliver
>listet, så man skulle have 2 varenr. felter - et med mellemrum og et uden
>(som Jonathan foreslog).
Hvad med at formattere dem når de skal vises? Med mindre mellemrummene er
placeret forskelligt i forskellige poster, synes jeg det lyder som den nemmeste
løsning - så undgår man redundante data.
FUT: dk.edb.database (hvor jeg synes debatten er mest relevant)
--
Med venlige hilsner
Nis Jørgensen, Albertslund
Actual code behavior may differ from intended.
| |
Thïngmand (04-12-2000)
| Kommentar Fra : Thïngmand |
Dato : 04-12-00 09:35 |
|
> Hvad med at formattere dem når de skal vises? Med mindre mellemrummene er
> placeret forskelligt i forskellige poster, synes jeg det lyder som den
nemmeste
> løsning - så undgår man redundante data.
Det er blevet foreslået, men der som sagt tale om forskellige slags
varenumre
> FUT: dk.edb.database (hvor jeg synes debatten er mest relevant)
Er krydsposted i dk.edb.database og serveside, da jeg ikke var sikker på om
der skulle en databaseløsnig eller en PHP løsning til...
| |
|
|