sql >> Databáze >  >> RDS >> Mysql

Jak přidat oddělovač do zřetězeného řetězce v MySQL – CONCAT_WS()

V MySQL je to CONCAT_WS() Funkce umožňuje přidat oddělovač ke zřetězeným řetězcům. Pokud použijete pouze CONCAT() funkce, neměli byste žádný oddělovač (pokud jste explicitně nepřidali oddělovač jako argument mezi každý argument řetězce).

Běžné použití CONCAT_WS() funkcí je vytvořit seznam oddělený čárkami.

Zde je příklad:

SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;

Výsledek:

+------------------+
| Location         |
+------------------+
| Sydney,Australia |
+------------------+

A můžete tam přidat mezeru, pokud chcete:

SELECT CONCAT_WS(', ','Sydney', 'Australia') AS Location;

Výsledek:

+-------------------+
| Location          |
+-------------------+
| Sydney, Australia |
+-------------------+

Oddělovač

Nic neříká, že oddělovač musí být čárka. Oddělovačem může být libovolný řetězec.

Zde je stejný příklad jako předchozí, ale tento používá jiný oddělovač.

SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;

Výsledek:

+----------------+
| Location       |
+----------------+
| Paris - France |
+----------------+

Příklad databáze

Zde je příklad načítání dat z databáze a spojení dvou sloupců do jednoho, odděleného čárkou:

SELECT CONCAT_WS(', ', city.Name, country.Name ) AS Location
FROM city
INNER JOIN country ON
city.CountryCode = country.Code
WHERE country.Code = 'NZL';

Výsledek:

+---------------------------+
| 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   |
+---------------------------+

Hodnoty NULL

Pokud je některý z argumentů NULL hodnotu, MySQL tuto hodnotu a její oddělovač přeskočí, ale ostatní zpracuje.

Příklad:

SELECT CONCAT_WS(', ','Auckland', NULL, 'New Zealand') AS Location;

Výsledek:

+-----------------------+
| Location              |
+-----------------------+
| Auckland, New Zealand |
+-----------------------+

Oddělovač hodnot NULL

Pokud je samotný oddělovač NULL hodnotu, operace zřetězení vrátí NULL .

Příklad:

SELECT CONCAT_WS(NULL,'Auckland', NULL, 'New Zealand') AS Location;

Výsledek:

+----------+
| Location |
+----------+
| NULL     |
+----------+

To je jeden z rozdílů mezi MySQL a T-SQL (SQL Server, Azure). V T-SQL, pokud je oddělovač NULL hodnota, hodnoty řetězce jsou stále zřetězené, ale bez oddělovače.


  1. Funkce BIN_TO_NUM() v Oracle

  2. Předávání ID uživatele spouštěčům PostgreSQL

  3. java.lang.IllegalStateException:Nelze přečíst řádek 0, sloupec -1 z CursorWindow – problém Android sqlite

  4. Jak vybrat poskytovatele Oracle pro aplikaci .Net?