Replace() (MySQL)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

De functie replace() vervangt tekenreeksen.

Syntaxis

replace(bron, van, naar)

Bv.:

select replace ("foobar","foo","boo")
boobar

Bv.:

update tbl_root set naamnl05gs = replace(naamnl05gs,'-set','s')

De functie REPLACE() ondersteunt geen wildcards of regex. Dat moet je via een externe tool doen. bv.:

  • Dynamische SQL in een sproc - Dat is de manier
  • Via PHP
  • Export - sed - import [1]
  • Overig [2],[3].

Null-waardes & select queries

NULL-waardes in een select query vervangen door iets handigers:

select ifnull ("hoihallo","leeg!");   -- Output: "hoihallo", want input-argument niet-null en wordt daarom geretourneerd
select ifnull (null,"leeg!");         -- Output: "leeg!", want input-argument is null en dan wordt het tweede argument geretourneerd

Null-waardes & exportbestanden

Bij exports naar bestanden worden null-waardes meestal \N en daar kan ik zo weinig mee

select replace(gewicht,isnull,"niet nul") from tbl_sjabloon -- Foutmelding: isnull werkt niet in deze situatie
select replace(gewicht,null,"niet nul") from tbl_sjabloon --  Vult alles met null-waardes
select replace(ifnull(gewicht,),'\n',"niet nul") from tbl_sjabloon -- Werkt!

De laatste variant werkt: null-waardes zijn nu verdwenen, maar er verschijnen ook geen nieuwe waardes - Sois. Probleem opgelost.

Alle occurences worden vervangen

Bv.:

select replace("foo foo foo foobar","foo","boo");

boo boo boo boobar

Wil je iets specifieker, dan is substring_index misschien geschikter: SUBSTRING INDEX (MySQL)

Een streepje is niet altijd een streepje

Er zijn verschillende soorten verbindingsstreepjes. Belangrijk om rekening mee te houden.

Zie ook

Bronnen