MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verketten Sie eine Zeichenfolge und eine Zahl in SQL

In den meisten Fällen unterscheidet sich die Verkettung einer Zeichenfolge und einer Zahl in SQL nicht von der Verkettung zweier Zeichenfolgen.

Die meisten DBMSs verketten die Zeichenkette und die Zahl, als ob sie beide Zeichenketten wären. Dies liegt daran, dass die Zahl normalerweise vor der Verkettungsoperation in eine Zeichenfolge konvertiert wird.

Die meisten großen RDBMSs bieten ein CONCAT() Funktion für Verkettungsoperationen, sowie ein CONCAT_WS() Funktion, mit der Sie ein Trennzeichen angeben können, um die verketteten Argumente zu trennen.

Die meisten großen RDBMS enthalten auch einen String-Verkettungsoperator, der es uns ermöglicht, seine Operanden zu verketten.

Der CONCAT() Funktion

Die meisten großen RDBMSs bieten ein CONCAT() Funktion zum Verketten ihrer String-Argumente. Im Allgemeinen werden Argumente, die keine Zeichenfolgen sind, in eine Zeichenfolge konvertiert, bevor die Verkettung erfolgt.

Beispiel:

SELECT CONCAT('Player', 456);

Ergebnis:

Player456

Wenn wir zwischen den verketteten Argumenten ein Leerzeichen einfügen möchten, können wir entweder einem der Strings ein Leerzeichen hinzufügen oder ein Leerzeichen als separates Argument einfügen:

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

Ergebnis:

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

RDBMSs, die einen CONCAT() haben Funktion umfassen MySQL, MariaDB, SQL Server, Oracle und PostgreSQL.

SQLite hat kein CONCAT() Funktion. SQLite macht es haben einen String-Verkettungsoperator (siehe unten).

Der CONCAT_WS() Funktion

Eine andere Möglichkeit, ein Leerzeichen einzufügen, ist die Verwendung von CONCAT_WS() Funktion. Mit dieser Funktion können Sie ein Trennzeichen angeben, das verwendet wird, um alle verketteten Argumente zu trennen.

Beispiel:

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

Ergebnis:

Player 456 

Diese Funktion kann besonders nützlich sein, wenn Sie viele Argumente verketten müssen:

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

Ergebnis:

Red, 2, Green, 456, Black

In solchen Fällen müssen Sie das Trennzeichen nur einmal angeben. In diesem Beispiel habe ich als Trennzeichen ein Komma und ein Leerzeichen angegeben.

RDBMSs, die einen CONCAT_WS() haben Funktion gehören MySQL, MariaDB, SQL Server und PostgreSQL.

SQLite und Oracle haben kein CONCAT_WS() funktionieren, aber sie tun haben einen String-Verkettungsoperator (siehe unten).

Der String-Verkettungsoperator

Die meisten RDBMS enthalten einen Zeichenfolgenverkettungsoperator, der seine Operanden verkettet.

Wenn Sie SQLite verwenden, ist dies Ihre einzige Option.

Beispiel:

SELECT 'Player' || 456;

Ergebnis:

Player456

Beachten Sie, dass Sie in MySQL zuerst den Pipe-Verkettungsoperator aktivieren müssen.

Dasselbe gilt für MariaDB.

SQL-Server

Das obige Beispiel funktioniert nicht in SQL Server. Verwenden Sie in SQL Server das Pluszeichen (+ ) Zeichenfolgenverkettungsoperator.

Außerdem muss die Zahl in eine Zeichenfolge konvertiert werden, bevor versucht wird, sie zu verketten:

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

Ergebnis:

Player456

Folgendes passiert, wenn ich es versuche, ohne die Zahl zuerst in einen String umzuwandeln:

SELECT 'Player' + 456;

Ergebnis:

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

SQL Server denkt, dass wir versuchen, zwei Zahlen zu addieren (weil + ist auch der Additionsoperator) und gibt daher einen Fehler zurück, da einer der Operanden ein String ist.