sql >> Databáze >  >> NoSQL >> MongoDB

Spojte řetězec a číslo v SQL

Ve většině případů se zřetězení řetězce a čísla v SQL neliší od zřetězení dvou řetězců.

Většina DBMS zřetězí řetězec a číslo, jako by to byly oba řetězce. Důvodem je, že číslo je obvykle převedeno na řetězec před operací zřetězení.

Většina hlavních RDBMS poskytuje CONCAT() funkce pro operace zřetězení a také CONCAT_WS() funkce, která vám umožňuje určit oddělovač, pro který se mají oddělit zřetězené argumenty.

Většina hlavních RDBMS také obsahuje operátor zřetězení řetězců, který nám umožňuje zřetězení jeho operandů.

CONCAT() Funkce

Většina hlavních RDBMS poskytuje CONCAT() funkce pro zřetězení jeho argumentů řetězce. Obecně platí, že neřetězcové argumenty jsou převedeny na řetězec dříve, než dojde ke zřetězení.

Příklad:

SELECT CONCAT('Player', 456);

Výsledek:

Player456

Pokud chceme mezi zřetězené argumenty vložit mezeru, můžeme buď přidat mezeru k jednomu z řetězců, nebo zahrnout mezeru jako samostatný argument:

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

Výsledek:

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

RDBMS, které mají CONCAT() funkce zahrnují MySQL, MariaDB, SQL Server, Oracle a PostgreSQL.

SQLite nemá CONCAT() funkce. SQLite dělá mají operátor zřetězení řetězců (viz níže).

CONCAT_WS() Funkce

Dalším způsobem, jak vložit mezeru, je použít CONCAT_WS() funkce. Tato funkce vám umožňuje určit oddělovač, který bude použit k oddělení všech zřetězených argumentů.

Příklad:

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

Výsledek:

Player 456 

Tato funkce může být zvláště užitečná, pokud máte mnoho argumentů ke zřetězení:

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

Výsledek:

Red, 2, Green, 456, Black

V takových případech stačí zadat oddělovač pouze jednou. V tomto příkladu jsem jako oddělovač zadal čárku a mezeru.

RDBMS, které mají CONCAT_WS() funkce zahrnují MySQL, MariaDB, SQL Server a PostgreSQL.

SQLite a Oracle nemají CONCAT_WS() funkce, ale dělají mají operátor zřetězení řetězců (viz níže).

Operátor zřetězení řetězců

Většina RDBMS obsahuje operátor zřetězení řetězců, který zřetězí jeho operandy.

Pokud používáte SQLite, je to vaše jediná možnost.

Příklad:

SELECT 'Player' || 456;

Výsledek:

Player456

Všimněte si, že v MySQL budete muset nejprve povolit operátor zřetězení potrubí.

Totéž platí pro MariaDB.

SQL Server

Výše uvedený příklad nebude fungovat v SQL Server. V SQL Server použijte znaménko plus (+ ) operátor zřetězení řetězců.

Před pokusem o zřetězení bude také nutné převést číslo na řetězec:

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

Výsledek:

Player456

Pokud se o to pokusím, aniž bych nejprve převedl číslo na řetězec, stane se toto:

SELECT 'Player' + 456;

Výsledek:

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

SQL Server si myslí, že se pokoušíme přidat dvě čísla (protože + je také operátor sčítání) a proto vrací chybu, protože jeden z operandů je řetězec.


  1. jackson deserializovat objekt se seznamem rozhraní pružiny

  2. Redis:Amazon EC2 vs Elasticache

  3. windows:rails:chyba při instalaci bson_ext

  4. Výčty v MongoDB