Strings manipuleren (MySQL): verschil tussen versies
Regel 126: | Regel 126: | ||
<pre> | <pre> | ||
− | select * from import where sku like "%/%" // Selecteer alle records met een / in veld 'sku' | + | select |
+ | * | ||
+ | from | ||
+ | import | ||
+ | where | ||
+ | sku like "%/%" // Selecteer alle records met een / in veld 'sku' | ||
</pre> | </pre> | ||
Versie van 16 jul 2021 14:41
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
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); # 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
In een where-clause kun je op allerlei manieren testen op de aanwezigheid van een string. Simpel voorbeeld:
select * from import where sku like "%/%" // Selecteer alle records met een / in veld 'sku'
Het wordt interessanter als onderdeel van flow control. Voorbeeld dat werkt in sql-scripts (dus buiten sprocs):
select if ( instr("blub", "l")>0, "Ja", "Nee" ) as resultaat;
Zie ook
- Strings, bytes & characters (MySQL)
- SUBSTRING INDEX (MySQL)
- Tekencodering achterhalen
- Temporary tables (MySQL)
- Trim (MySQL)