sql >> Database >  >> RDS >> Mysql

Een scheidingsteken toevoegen aan een aaneengeschakelde tekenreeks in MySQL - CONCAT_WS()

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.


  1. Database aanmaken in MySQL

  2. JSON_VALUE() Functie in Oracle

  3. SQLException:Protocolschending. Probleem met Oracle JDBC-stuurprogramma

  4. SQLite-subquery