Ik was bezig met PHP en MySQL voor een online shop. Hiervoor moest ik diverse SQL statements opzoeken voor verschillende resultaten. Nu dacht ik; “waar bewaar ik dit voor de volgende keer?”. Nou op het blog… misschien handig voor anderen!? 🙂
Het gaat om hele simpele toepassingen, echte beginners tips dus.
Permalink kolom toevoegen
Ik had een tabel (Streken) met een kolom Streek met daarin woorden / teksten met diverse speciale tekens zoals ë / ô / é / â / ï / etc. Ook stonden in deze tekst bijvoorbeeld spaties / slashes en andere speciale karakters. Dus ik heb een nieuwe kolom (een nieuw veld) toegevoegd met de naam “Streek_permalink”. Dat ging als volgt:
ALTER TABLE `Streken` ADD `Streek_permalink` VARCHAR( 45 ) NOT NULL ;
Eenvoudig! Toch?
Kolom inhoud kopiëren
Echter nu wilde ik de inhoud van de kolom “Streek” kopiëren naar de kolom “Streek-permalink”. Dus eigenlijk een INSERT van de values van KOLOM A naar KOLOM B. Dat gaat als volgt:
update `Tabelnaam` set `Kolom-B` = `Kolom-A`;
Of in mijn geval:
update `Streken` set `Streek_permalink` = LOWER(Streek);
Hierbij zorg je dat de inhoud van de kolom Streek wordt overgezet naar de kolom Streek_permalink maar dat gelijk ook alle Hoofdletters worden omgezet naar kleine letters.
Speciale karakters vervangen
Nu bevat de kolom Streek_permalink natuurlijk nog steeds de bijzondere letters zoals ë / ô / é en de speciale leestekens zoals / en ‘.’. Helaas is de volgende SQL statement niet generiek en deze moet je dus voor iedere letter / ieder leesteken opnieuw uitvoeren. Maar het vervangen van deze tekens gaat als volgt:
update `Tabel-naam` set `Kolom-B` = Replace(Kolom-B,’â’,’a’);
update `Tabel-naam` set `Kolom-B` = Replace(Kolom-B,’ ‘,’-‘);
update `Tabel-naam` set `Kolom-B` = Replace(Kolom-B,’//’,’-‘);
Of in mijn geval:
update `Streken` set `Streek_permalink` = Replace(Streek_permalink,’â’,’a’)
Ik hoop dat je er iets aan gehad hebt. Indien je een SQL replace instructie kent waarbij je in één keer alle speciale karakters kunt vervangen… laat het hieronder in een reactie dan even weten.
Geen reacties