Strings manipuleren (MySQL)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Zie ook

Converteren naar onderkast

update tbl_tools

set tbl_tools.kind_de_lowercase =lower(tbl_tools.kind_de_lowercase)

Eerste letter van elk woord converteren naar kapitaal

Standaard kan dat niet in MySQL, maar dit helpt al flink:

update tbl_merk
set name = concat(
    upper(substr(name,1,1)),
    lower(substr(name,2))
);

Kolommen vervangen

Algemeen:

UPDATE table_name SET doelveld = nieuwewaarde

Voorbeeld:

UPDATE 

    tbl_root

SET 

    MateriaalDE ='Graphit'

WHERE 

    KindOfProduct='Koolborstels voor handgereedschap'

Left

select left("hoipipeloi",3);
hoi

length()

Bv.

select length("apekool");
7

Tellen begint dus met 1, en niet met 0.

Replace

Zie Replace() (MySQL)

Right

Bv.:

select right("foo-bar",3)
bar

Substring & Position

Gebruik substring en position om substring te extraheren.

Voorbeeld: Dubbele primaire sleutels met schuine streep

select substr("0100/1100",1,4);                             -- Output: 0100
select substr("0100/1100",5);                               -- Output: /1100
select substr("0100/1100",5,1);                             -- Output: /
select substr("0100/1100",5,2);                             -- Output: /1
select position("/" in "0100/1100");                        -- Output: 5
select substr("0100/1100",1,position("/" in "0100/1100")-1);-- Output: 0100
select substr("0100/1100",position("/" in "0100/1100")+1)   -- Output: 1100

P.s.: Er mag geen spatie zitten in position(

Toegepast op een tabel als geheel

select substr(apparaat_type,1,3) from tbl_tmp1

Met underscores gescheiden samengestelde sleutels

Ik heb regelmatig data met viervoudige samengestelde sleutels, gescheiden door underscores:

0101_Bosch_P 80 / P 80 K_0 603 232 001
0101_Bosch_P 80 / P 80 K_0 603 232 003
0101_Bosch_P 80 / P 80 K_0 603 232 032

En zo peuter je dit uit elkaar:

select

	sku,
	substring_index(sku,"_",1) as sub_1,
	substring_index(substring_index(sku,"_",2),"_",-1) as sub_2,
	substring_index(substring_index(sku,"_",3),"_",-1) as sub_3,
	substring_index(substring_index(sku,"_",4),"_",-1) as sub_4

from rootb1;

Testen voor aanwezigheid van een bepaald teken

select * from import where sku like "%/%" // Selecteer alle records met een / in veld 'sku'

Trim

Voorbeelden:

update tbl_tools set apparaat_type=trim(apparaat_type);
update tbl_tools set apparaat_type=trim(trailing ', ' from apparaat_type);
update tbl_tools set apparaat_type=trim(both ', ' from apparaat_type);

Zoals je kunt zien, wordt het keyword FROM gebruikt om het laatste argument te scheiden van de eventuele eerdere argumenten. Dat keyword kun je niet achterwege laten.

Bronnen