Strings manipuleren (MySQL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 88: Regel 88:
 
</pre>
 
</pre>
  
''' Voorbeeld: Valuta-symbool wegtoveren:
+
P.s.:  
  
<pre>
+
* Er mag geen spatie zitten in <code>position(</code>
select
+
* Om een valuta-teken weg te toveren, zou ik <code>substring_index</code> gebruiken
<pre>
 
 
 
P.s.: Er mag geen spatie zitten in <code>position(</code>
 
  
 
''' Toegepast op een tabel als geheel '''
 
''' Toegepast op een tabel als geheel '''

Versie van 29 mrt 2020 19:33

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);                               # From position 1, select 4 characters → 0100
select substr("0100/1100",5);                                 # From position 5, select all characters → /1100
select substr("0100/1100",5,1);                               # From position 5, select 1 character → /
select substr("0100/1100",5,2);                               # From position 5, select 2 characters → /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(
  • Om een valuta-teken weg te toveren, zou ik substring_index gebruiken

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