sql >> Databasteknik >  >> NoSQL >> MongoDB

Sammanfoga en sträng och ett nummer i SQL

I de flesta fall är det inte annorlunda att sammanfoga en sträng och ett nummer i SQL från att sammanfoga två strängar.

De flesta DBMS kommer att sammanfoga strängen och numret som om de båda vore strängar. Detta beror på att numret vanligtvis konverteras till en sträng före sammanlänkningsoperationen.

De flesta större RDBMS tillhandahåller en CONCAT() funktion för sammanlänkningsoperationer, såväl som en CONCAT_WS() funktion som låter dig ange en separator för vilken de sammanlänkade argumenten ska separeras.

De flesta större RDBMS inkluderar också en strängsammansättningsoperator, som gör att vi kan sammanfoga dess operander.

CONCAT() Funktion

De flesta större RDBMS tillhandahåller en CONCAT() funktion för att sammanfoga dess strängargument. I allmänhet konverteras icke-strängargument till en sträng innan sammanlänkningen sker.

Exempel:

SELECT CONCAT('Player', 456);

Resultat:

Player456

Om vi ​​vill inkludera ett mellanslag mellan de sammanlänkade argumenten kan vi antingen lägga till ett mellanslag till en av strängarna eller inkludera ett mellanslag som ett separat argument:

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

Resultat:

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

RDBMS som har en CONCAT() funktioner inkluderar MySQL, MariaDB, SQL Server, Oracle och PostgreSQL.

SQLite har inte en CONCAT() fungera. SQLite gör har en strängsammansättningsoperator (se nedan).

CONCAT_WS() Funktion

Ett annat sätt att inkludera ett mellanslag är att använda CONCAT_WS() fungera. Den här funktionen låter dig ange en separator som ska användas för att separera alla sammanlänkade argument.

Exempel:

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

Resultat:

Player 456 

Den här funktionen kan vara särskilt användbar om du har många argument att sammanfoga:

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

Resultat:

Red, 2, Green, 456, Black

I sådana fall behöver du bara ange separatorn en gång. I det här exemplet angav jag ett kommatecken och ett mellanslag som avgränsare.

RDBMS som har en CONCAT_WS() funktioner inkluderar MySQL, MariaDB, SQL Server och PostgreSQL.

SQLite och Oracle har inte en CONCAT_WS() funktion, men de gör har en strängsammansättningsoperator (se nedan).

Strängsammansättningsoperatören

De flesta RDBMS inkluderar en strängsammansättningsoperator som sammanfogar dess operander.

Om du använder SQLite är detta ditt enda alternativ.

Exempel:

SELECT 'Player' || 456;

Resultat:

Player456

Observera att i MySQL måste du först aktivera rörsammansättningsoperatorn.

Detsamma gäller MariaDB.

SQL-server

Ovanstående exempel fungerar inte i SQL Server. I SQL Server, använd plustecknet (+ ) strängsammansättningsoperator.

Dessutom måste numret också konverteras till en sträng innan du försöker sammanfoga:

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

Resultat:

Player456

Så här händer om jag försöker göra det utan att först konvertera numret till en sträng:

SELECT 'Player' + 456;

Resultat:

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

SQL Server tror att vi försöker lägga till två siffror (eftersom + är också additionsoperatorn) och returnerar därför ett fel, på grund av att en av operanderna är en sträng.


  1. Mongo unika index okänslig för skiftläge

  2. Mongo kan inte starta

  3. Vill du avbryta en uppgift som redan körs i Python RQ?

  4. använder en variabel i mongodb update