sql >> Database >  >> NoSQL >> MongoDB

Een tekenreeks en een getal samenvoegen in SQL

In de meeste gevallen is het samenvoegen van een tekenreeks en een getal in SQL niet anders dan het samenvoegen van twee tekenreeksen.

De meeste DBMS'en voegen de tekenreeks en het nummer samen alsof ze beide tekenreeksen zijn. Dit komt omdat het nummer meestal wordt geconverteerd naar een tekenreeks vóór de aaneenschakeling.

De meeste grote RDBMS'en bieden een CONCAT() functie voor aaneenschakelingsbewerkingen, evenals een CONCAT_WS() functie waarmee u een scheidingsteken kunt opgeven waarvoor u de aaneengeschakelde argumenten wilt scheiden.

De meeste grote RDBMS'en bevatten ook een operator voor het samenvoegen van tekenreeksen, waarmee we de operanden kunnen samenvoegen.

De CONCAT() Functie

De meeste grote RDBMS'en bieden een CONCAT() functie voor het aaneenschakelen van zijn stringargumenten. Over het algemeen worden niet-tekenreeksargumenten geconverteerd naar een tekenreeks voordat de aaneenschakeling plaatsvindt.

Voorbeeld:

SELECT CONCAT('Player', 456);

Resultaat:

Player456

Als we een spatie tussen de aaneengeschakelde argumenten willen opnemen, kunnen we ofwel een spatie toevoegen aan een van de strings, of een spatie opnemen als een afzonderlijk argument:

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

Resultaat:

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

RDBMS'en met een CONCAT() functies omvatten MySQL, MariaDB, SQL Server, Oracle en PostgreSQL.

SQLite heeft geen CONCAT() functie. SQLite doet een tekenreeksaaneenschakelingsoperator hebben (zie hieronder).

De CONCAT_WS() Functie

Een andere manier om een ​​spatie op te nemen is door de CONCAT_WS() . te gebruiken functie. Met deze functie kunt u een scheidingsteken opgeven dat wordt gebruikt om alle aaneengeschakelde argumenten te scheiden.

Voorbeeld:

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

Resultaat:

Player 456 

Deze functie kan met name handig zijn als u veel argumenten moet samenvoegen:

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

Resultaat:

Red, 2, Green, 456, Black

In dergelijke gevallen hoeft u het scheidingsteken maar één keer op te geven. In dit voorbeeld heb ik een komma en een spatie opgegeven als scheidingsteken.

RDBMS'en met een CONCAT_WS() functies omvatten MySQL, MariaDB, SQL Server en PostgreSQL.

SQLite en Oracle hebben geen CONCAT_WS() functioneren, maar ze doen een tekenreeksaaneenschakelingsoperator hebben (zie hieronder).

De tekenreeksaaneenschakelingsoperator

De meeste RDBMS'en bevatten een tekenreeksaaneenschakelingsoperator die de operanden samenvoegt.

Als je SQLite gebruikt, is dit je enige optie.

Voorbeeld:

SELECT 'Player' || 456;

Resultaat:

Player456

Merk op dat u in MySQL eerst de operator voor pijpaaneenschakeling moet inschakelen.

Hetzelfde geldt voor MariaDB.

SQL-server

Het bovenstaande voorbeeld werkt niet in SQL Server. Gebruik in SQL Server het plusteken (+ ) tekenreeksaaneenschakelingsoperator.

Het nummer moet ook worden geconverteerd naar een tekenreeks voordat u probeert samen te voegen:

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

Resultaat:

Player456

Dit is wat er gebeurt als ik het probeer zonder eerst het getal naar een tekenreeks te converteren:

SELECT 'Player' + 456;

Resultaat:

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

SQL Server denkt dat we twee getallen proberen toe te voegen (omdat + is ook de operator voor optellen) en retourneert daarom een ​​fout, omdat een van de operanden een tekenreeks is.


  1. Unit testen met MongoDB

  2. geef resultaten door aan een ander commando in redis

  3. Redis, verlopen sessie en reverse lookup

  4. MongoDB deleteMany()