Kan ik in een kolom voor alle records dezelfde aanpassing doen dmv één slq
commando?
Ik wil in een tabel met telefoonnrs alle +32 x xxxxxx vervangen door 0x
xxxxxx
Is dit mogelijk en hoe?
(ik maak gebruik van phpMyAdmin)
alvast bedankt
Geert
Likes: 0
Kan ik in een kolom voor alle records dezelfde aanpassing doen dmv één slq
commando?
Ik wil in een tabel met telefoonnrs alle +32 x xxxxxx vervangen door 0x
xxxxxx
Is dit mogelijk en hoe?
(ik maak gebruik van phpMyAdmin)
alvast bedankt
Geert
[Let op: unwrapped lines!]
I <Xns932D2DDF2F22geertserneelsgmxnet@195.130.132.65 >, Geert Serneels skrev:
> Ik wil in een tabel met telefoonnrs alle +32 x xxxxxx vervangen door 0x
> xxxxxx
> Is dit mogelijk en hoe?
Ja, het is natuurlijk mogelijk maar volgens mij niet direct met MySQL.
Je kunt wel heel simpel een perl of php scriptje schrijven dat alle
records itereert en update. Een voorbeeld in php:
$result = mysql_query("SELECT `id`, `nummer` FROM `bla`");
while (list ($id, $nummer) = mysql_fetch_row($result)) {
$nummer = eregi_replace("^\+32", "0", $nummer);
mysql_query("UPDATE `bla` SET `nummer` = '$nummer' WHERE `id` = '$id') ?
print "ID $ID update geslaagd" :
print "ID $ID update gefaald";
}
Ja, het is lelijke code met die ternary operator en zonder, maar dat maakt niet
uit nu :-p en ja, het is uiteraard ongetest dus niets gegarandeerd...
--
uws mail uws@xs4all.nl
de welvaartstaat? :: of die bestaat? :: ze vraagt zich echt af -- monza
On Mon, 24 Feb 2003 23:16:54 GMT, Geert Serneels <geert.serneels_NO@SPAM_gmx.net> wrote:
> Kan ik in een kolom voor alle records dezelfde aanpassing doen dmv één slq
> commando?
>
> Ik wil in een tabel met telefoonnrs alle +32 x xxxxxx vervangen door 0x
> xxxxxx
>
> Is dit mogelijk en hoe?
Je wilt de spaties eruit halen?
Hans
--
Ik wil http://www.linux.nl wel overnemen voor het symbolische bedrag
van 1 EURO.
Hans Wolters <hans@e35203.upc-e.chello.nl> wrote in
news:slrnb5lahk.2ak.hans@foo.bar:
> On Mon, 24 Feb 2003 23:16:54 GMT, Geert Serneels
> <geert.serneels_NO@SPAM_gmx.net> wrote:
>> Kan ik in een kolom voor alle records dezelfde aanpassing doen dmv
>> één slq commando?
>>
>> Ik wil in een tabel met telefoonnrs alle +32 x xxxxxx vervangen door
>> 0x xxxxxx
>>
>> Is dit mogelijk en hoe?
>
> Je wilt de spaties eruit halen?
nee, ik heb nu alles in de internationale notatie staan, maar men heeft
gevraagd om het enkel met zonenummer te doen dus iets als 03 123 45 67
ipv +32 3 123 45 67
Geert
zeker, sql is ontworpen om loops te voorkomen.
iets als
UPDATE telephonenumbers SET tel = CONCAT('0', RIGHT(tel, 8))
zou het m.i. moeten doen.
~henq
"Geert Serneels" <geert.serneels_NO@SPAM_gmx.net> schreef in bericht
newsns932D2DDF2F22geertserneelsgmxnet@195.130.132.65.. .
> Kan ik in een kolom voor alle records dezelfde aanpassing doen dmv één slq
> commando?
>
> Ik wil in een tabel met telefoonnrs alle +32 x xxxxxx vervangen door 0x
> xxxxxx
>
> Is dit mogelijk en hoe?
> (ik maak gebruik van phpMyAdmin)
>
> alvast bedankt
>
> Geert
uws <uws@nospam-xs4all.nl> wrote:
> $result = mysql_query("SELECT `id`, `nummer` FROM `bla`");
> while (list ($id, $nummer) = mysql_fetch_row($result)) {
> $nummer = eregi_replace("^\+32", "0", $nummer);
> mysql_query("UPDATE `bla` SET `nummer` = '$nummer' WHERE `id` = '$id') ?
> print "ID $ID update geslaagd" :
> print "ID $ID update gefaald";
> }
> Ja, het is lelijke code met die ternary operator en zonder, maar dat
> maakt niet uit nu :-p en ja, het is uiteraard ongetest dus niets
> gegarandeerd...
Die operator is niet het probleem ,dat je zooi checked in PHP welke je
al had kunnen uitbesteden aan mysql en daarmee heel wat onzinngige rijen
had kunnen voorkomen is erger. Verder controleer je niet eens of er
uberhaupt wordt voldaan aan de regexp en pas je dus _elke_ rij aan ook
indien er niets aan veranderd is.
Op http://www.mysql.com/doc/en/String_functions.html staan een boel
interessante functies, iets als
update foo set nummer=replace(nummer,'+32','0') where nummer like '+32%'
zou wel eens de gezocht oplossing kunnen zijn.
--
Daniel Tryba
In article <Xns932D61BDFEADgeertserneelsgmxnet@195.130.132.65 >, Geert Serneels <geert.serneels_NO@SPAM_gmx.net> wrote:
>Hans Wolters <hans@e35203.upc-e.chello.nl> wrote in
>
>nee, ik heb nu alles in de internationale notatie staan, maar men heeft
>gevraagd om het enkel met zonenummer te doen dus iets als 03 123 45 67
>ipv +32 3 123 45 67
hmmm tijd om dat landcode even in een apart veld op te slaan? Stel dat ze
volgende week weer terugwillen..... Alhoewel alleen +32 hoefde vervangen
te worden..... +32 is dat belgenland of ben je in de war en moet het +31
zijn?
Jaap-Andre
doemaarietsanders@data-assist.nl (Jaap-Andre de Hoop) wrote in
news:YPE6a.401868$B7.14474218@Flipper:
> In article <Xns932D61BDFEADgeertserneelsgmxnet@195.130.132.65 >, Geert
> Serneels <geert.serneels_NO@SPAM_gmx.net> wrote:
>>Hans Wolters <hans@e35203.upc-e.chello.nl> wrote in
>>
>>nee, ik heb nu alles in de internationale notatie staan, maar men
>>heeft gevraagd om het enkel met zonenummer te doen dus iets als 03 123
>>45 67 ipv +32 3 123 45 67
>
> hmmm tijd om dat landcode even in een apart veld op te slaan? Stel dat
> ze volgende week weer terugwillen..... Alhoewel alleen +32 hoefde
> vervangen te worden..... +32 is dat belgenland of ben je in de war en
> moet het +31 zijn?
>
> Jaap-Andre
>
+32 id idd België. Momenteel zijn alle nummers (op mss een uitzondering na)
Belgisch (dus +32).
Ik denk er juist aan om de notate mss te veranderen in +32-3-1234567 en dan
dmv het php-script enkel zonenummer en nummer zelf eruit te halen (ik denk
zo aan exclude()). Nu herinner ik me dat ik ooit een gelijkaardig script
heb gemaakt.
Maar dan moet ik de eerste en tweee spatie kunnen vervangen door een '-' en
de andere spaties wegwerken.
Op die manier kan ik idd altijd makkelijk terug zonder opnieuw hele tabel
te veranderen.
Kunnen jullie me hierbij helpen? Ik vrees dat de methode van Daniel Tryba
niet zal lukken als ik enkele spaties wil omzetten in '-' en anderen
verwijderen.
Alvast bedankt,
Geert
Geert Serneels <geert.serneels_NO@spam_gmx.net> wrote:
> Kunnen jullie me hierbij helpen? Ik vrees dat de methode van Daniel Tryba
> niet zal lukken als ik enkele spaties wil omzetten in '-' en anderen
> verwijderen.
Zonder het getest te hebben: waarom zou het niet lukken? Je weet immers
dat de spaties die je wilt om,zetten in de eerst 6 characters zit.
Reactief gebruik van concat,substr en replace zou dus het gewenste
resultaat moeten kunnen opleveren.
--
Daniel Tryba
Daniel Tryba <news_nl.internet.www.server-side@canopus.nl> wrote in
news:b3gst1$mn6$1@news.tue.nl:
> Geert Serneels <geert.serneels_NO@spam_gmx.net> wrote:
>> Kunnen jullie me hierbij helpen? Ik vrees dat de methode van Daniel
>> Tryba niet zal lukken als ik enkele spaties wil omzetten in '-' en
>> anderen verwijderen.
>
> Zonder het getest te hebben: waarom zou het niet lukken? Je weet
> immers dat de spaties die je wilt om,zetten in de eerst 6 characters
> zit. Reactief gebruik van concat,substr en replace zou dus het
> gewenste resultaat moeten kunnen opleveren.
>
ehm, blijkbaar is mysql toch niet zo makkelijk, substr ken ik wel, replace
snap ik nu ook, maar hoe die moet gaan combineren?
en van concat snap ik niks (ik heb de docs gelezen die je in een vorige
post gaf)
Geert Serneels <geert.serneels_NO@spam_gmx.net> wrote:
>> Zonder het getest te hebben: waarom zou het niet lukken? Je weet
>> immers dat de spaties die je wilt om,zetten in de eerst 6 characters
>> zit. Reactief gebruik van concat,substr en replace zou dus het
>> gewenste resultaat moeten kunnen opleveren.
>>
>
> ehm, blijkbaar is mysql toch niet zo makkelijk, substr ken ik wel, replace
> snap ik nu ook, maar hoe die moet gaan combineren?
> en van concat snap ik niks (ik heb de docs gelezen die je in een vorige
> post gaf)
Het is echt heel simpel hoor (zal maar niet vertellen dat ik ongeveer 5
minuten heb moeten zoeken naar het feit dat substring(bla,0,6) niets
oplevert
Maar als je bv PHP een beetje door hebt dan blijkt dat mysql (bijna)
precies het zelfde werkt. substring levert een string op en kan dus als
input voor een replace worden gebruikt, welke weer een string oplevert
en dus aan concat kan worden doorgegeven. Even goed groeperen en haakjes
er om en je krijgt het volgende:
mysql> create table test (bla VARCHAR(255));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values ('+32 1 234 567 90');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+------------------+
| bla |
+------------------+
| +32 1 234 567 90 |
+------------------+
1 row in set (0.00 sec)
mysql> update test set bla=concat(replace(substring(bla,1,6)," ","-"),substring(
bla,7)) where bla like '+32%';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from test;
+------------------+
| bla |
+------------------+
| +32-1-234 567 90 |
+------------------+
1 row in set (0.00 sec)
mysql>
--
Daniel Tryba
Daniel Tryba <news_nl.internet.www.server-side@canopus.nl> wrote in
news:b3h053$o0o$1@news.tue.nl:
> Geert Serneels <geert.serneels_NO@spam_gmx.net> wrote:
>>> Zonder het getest te hebben: waarom zou het niet lukken? Je weet
>>> immers dat de spaties die je wilt om,zetten in de eerst 6 characters
>>> zit. Reactief gebruik van concat,substr en replace zou dus het
>>> gewenste resultaat moeten kunnen opleveren.
>>>
>>
>> ehm, blijkbaar is mysql toch niet zo makkelijk, substr ken ik wel,
>> replace snap ik nu ook, maar hoe die moet gaan combineren?
>> en van concat snap ik niks (ik heb de docs gelezen die je in een
>> vorige post gaf)
>
> Het is echt heel simpel hoor (zal maar niet vertellen dat ik ongeveer
> 5 minuten heb moeten zoeken naar het feit dat substring(bla,0,6) niets
> oplevert
>
> [uitleg]
Bedankt, het is gelukt.
Enkel de functie concat begrijp ik niet. (ook niet met de uitleg op
mysql.com).
mvg, Geert
Geert Serneels <geert.serneels_NO@spam_gmx.net> wrote:
> Enkel de functie concat begrijp ik niet. (ook niet met de uitleg op
> mysql.com).
concat is een afkorting voor concatenate:
$ webster concatenate
1 definition found
From Webster's Revised Unabridged Dictionary (1913) [web1913]:
Concatenate \Con*cat"e*nate\ (k[o^]n*k[a^]t"[-e]*n[=a]t), v. t.
[imp. & p. p. {Concatenated}; p. pr. & vb. n.
{Concatenating}.] [L. concatenatus, p. p. of concatenare to
concatenate. See {Catenate}.]
To link together; to unite in a series or chain, as things
depending on one another.
This all things friendly will concatenate. --Dr. H.
More
In simpel Nederlands: samenvoegen (in dit geval van strings).
--
Daniel Tryba
hint:
concat('hoer','a') -> 'hoera'
concat('hoer','b') -> 'hoerb'
sorry, beetje melig :-)
"Geert Serneels" <geert.serneels_NO@SPAM_gmx.net> schreef in bericht
> Enkel de functie concat begrijp ik niet. (ook niet met de uitleg op
> mysql.com).
>
> mvg, Geert
>