In MySQL is de CONCAT_WS()
Met deze functie kunt u een scheidingsteken toevoegen aan aaneengeschakelde tekenreeksen. Als u alleen de CONCAT()
. gebruikt functie, zou je geen scheidingsteken hebben (tenzij je expliciet een scheidingsteken hebt toegevoegd als argument tussen elk stringargument).
Een algemeen gebruik van de CONCAT_WS()
functie is om een door komma's gescheiden lijst te maken.
Hier is een voorbeeld:
SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;
Resultaat:
+------------------+ | Location | +------------------+ | Sydney,Australia | +------------------+
En je kunt daar een spatie toevoegen als je wilt:
SELECT CONCAT_WS(', ','Sydney', 'Australia') AS Location;
Resultaat:
+-------------------+ | Location | +-------------------+ | Sydney, Australia | +-------------------+
De scheidingsteken
Er is niets om te zeggen dat het scheidingsteken een komma moet zijn. Het scheidingsteken kan elke tekenreeks zijn.
Hier is hetzelfde voorbeeld als het vorige, behalve dat dit een ander scheidingsteken gebruikt.
SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;
Resultaat:
+----------------+ | Location | +----------------+ | Paris - France | +----------------+
Een databasevoorbeeld
Hier is een voorbeeld van het ophalen van gegevens uit een database en het combineren van twee kolommen in één, gescheiden door een komma:
SELECT CONCAT_WS(', ', city.Name, country.Name ) AS Location FROM city INNER JOIN country ON city.CountryCode = country.Code WHERE country.Code = 'NZL';
Resultaat:
+---------------------------+ | Location | +---------------------------+ | Auckland, New Zealand | | Christchurch, New Zealand | | Manukau, New Zealand | | North Shore, New Zealand | | Waitakere, New Zealand | | Wellington, New Zealand | | Dunedin, New Zealand | | Hamilton, New Zealand | | Lower Hutt, New Zealand | +---------------------------+
NULL-waarden
Als een van de argumenten een NULL
. is waarde, zal MySQL die waarde en zijn scheidingsteken overslaan, maar het zal nog steeds de andere verwerken.
Voorbeeld:
SELECT CONCAT_WS(', ','Auckland', NULL, 'New Zealand') AS Location;
Resultaat:
+-----------------------+ | Location | +-----------------------+ | Auckland, New Zealand | +-----------------------+
NULL-waardescheidingsteken
Als het scheidingsteken zelf een NULL
is waarde, retourneert de aaneenschakelingsbewerking NULL
.
Voorbeeld:
SELECT CONCAT_WS(NULL,'Auckland', NULL, 'New Zealand') AS Location;
Resultaat:
+----------+ | Location | +----------+ | NULL | +----------+
Dit is een van de verschillen tussen MySQL en T-SQL (SQL Server, Azure). In T-SQL, als het scheidingsteken een NULL
. is waarde, worden de tekenreekswaarden nog steeds aaneengeschakeld, maar zonder scheidingsteken.