Strings manipuleren (MySQL)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

char_length()

char_length() retourneert het aantal karakters, terwijl length het aantal bytes retourneert:

select char_length("Kohlebürsten") # 12
select length("Kohlebürsten")      # 13

Voor details, zie Strings, bytes & characters (MySQL).

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()

Zie char_lenght() hierboven!

Replace

Zie Replace() (MySQL)

Right()

Bv.:

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

Substring & Position

Substring

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'

Zie ook

Bronnen