MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Concatena una stringa e un numero in SQL

Nella maggior parte dei casi, concatenare una stringa e un numero in SQL non è diverso dal concatenare due stringhe.

La maggior parte dei DBMS concatenerà la stringa e il numero come se fossero entrambe stringhe. Questo perché il numero viene solitamente convertito in una stringa prima dell'operazione di concatenazione.

La maggior parte dei principali RDBMS fornisce un CONCAT() funzione per le operazioni di concatenazione, nonché un CONCAT_WS() funzione che consente di specificare un separatore per cui separare gli argomenti concatenati.

La maggior parte dei principali RDBMS include anche un operatore di concatenazione di stringhe, che ci consente di concatenare i suoi operandi.

Il CONCAT() Funzione

La maggior parte dei principali RDBMS fornisce un CONCAT() funzione per concatenare i suoi argomenti stringa. In genere, gli argomenti non stringa vengono convertiti in una stringa prima che si verifichi la concatenazione.

Esempio:

SELECT CONCAT('Player', 456);

Risultato:

Player456

Se vogliamo includere uno spazio tra gli argomenti concatenati, possiamo aggiungere uno spazio a una delle stringhe o includere uno spazio come argomento separato:

SELECT 
    CONCAT('Player ', 456) AS "Option 1",
    CONCAT('Player', ' ', 456) AS "Option 2";

Risultato:

+------------+------------+
| Option 1   | Option 2   |
+------------+------------+
| Player 456 | Player 456 |
+------------+------------+

RDBMS che hanno un CONCAT() includono MySQL, MariaDB, SQL Server, Oracle e PostgreSQL.

SQLite non ha un CONCAT() funzione. SQLite fa avere un operatore di concatenazione di stringhe (vedi sotto).

Il CONCAT_WS() Funzione

Un altro modo per includere uno spazio è usare CONCAT_WS() funzione. Questa funzione consente di specificare un separatore che verrà utilizzato per separare tutti gli argomenti concatenati.

Esempio:

SELECT CONCAT_WS(' ', 'Player', 456);

Risultato:

Player 456 

Questa funzione può essere particolarmente utile se hai molti argomenti da concatenare:

SELECT CONCAT_WS(', ', 'Red', 2, 'Green', 456, 'Black');

Risultato:

Red, 2, Green, 456, Black

In questi casi, è necessario specificare il separatore solo una volta. In questo esempio, ho specificato una virgola e uno spazio come separatore.

RDBMS che hanno un CONCAT_WS() includono MySQL, MariaDB, SQL Server e PostgreSQL.

SQLite e Oracle non hanno un CONCAT_WS() funzione, ma lo fanno avere un operatore di concatenazione di stringhe (vedi sotto).

L'operatore di concatenazione di stringhe

La maggior parte degli RDBMS include un operatore di concatenazione di stringhe che concatena i suoi operandi.

Se stai usando SQLite, questa è la tua unica opzione.

Esempio:

SELECT 'Player' || 456;

Risultato:

Player456

Nota che in MySQL, dovrai prima abilitare l'operatore di concatenazione pipe.

Lo stesso vale per MariaDB.

SQL Server

L'esempio sopra non funzionerà in SQL Server. In SQL Server, utilizzare il segno più (+ ) operatore di concatenazione di stringhe.

Inoltre, anche il numero dovrà essere convertito in una stringa prima di tentare di concatenare:

SELECT 'Player' + CAST(456 AS varchar(3));

Risultato:

Player456

Ecco cosa succede se provo a farlo senza prima convertire il numero in una stringa:

SELECT 'Player' + 456;

Risultato:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Player' to data type int.

SQL Server pensa che stiamo cercando di aggiungere due numeri (perché + è anche l'operatore di addizione) e quindi restituisce un errore, poiché uno degli operandi è una stringa.