W większości przypadków łączenie ciągu i liczby w SQL nie różni się od łączenia dwóch ciągów.
Większość DBMS łączy ciąg i liczbę tak, jakby były one ciągami. Dzieje się tak, ponieważ liczba jest zwykle konwertowana na ciąg przed operacją łączenia.
Większość głównych RDBMS zapewnia funkcję CONCAT()
funkcja do operacji konkatenacji, a także CONCAT_WS()
funkcja, która pozwala określić separator, dla którego oddzielone zostaną połączone argumenty.
Większość głównych RDBMS zawiera również operator konkatenacji ciągów znaków, który pozwala nam łączyć jego operandy.
CONCAT()
Funkcja
Większość głównych RDBMS zapewnia funkcję CONCAT()
funkcja do łączenia jej argumentów ciągu. Ogólnie rzecz biorąc, argumenty niebędące ciągami są konwertowane na ciąg przed konkatenacją.
Przykład:
SELECT CONCAT('Player', 456);
Wynik:
Player456
Jeśli chcemy umieścić spację między połączonymi argumentami, możemy dodać spację do jednego z ciągów lub dołączyć spację jako oddzielny argument:
SELECT
CONCAT('Player ', 456) AS "Option 1",
CONCAT('Player', ' ', 456) AS "Option 2";
Wynik:
+------------+------------+ | Option 1 | Option 2 | +------------+------------+ | Player 456 | Player 456 | +------------+------------+
RDBMS, które mają CONCAT()
funkcja obejmuje MySQL, MariaDB, SQL Server, Oracle i PostgreSQL.
SQLite nie ma funkcji CONCAT()
funkcjonować. SQLite robi mieć operator konkatenacji ciągów (patrz poniżej).
CONCAT_WS()
Funkcja
Innym sposobem włączenia spacji jest użycie CONCAT_WS()
funkcjonować. Ta funkcja pozwala określić separator, który zostanie użyty do oddzielenia wszystkich połączonych argumentów.
Przykład:
SELECT CONCAT_WS(' ', 'Player', 456);
Wynik:
Player 456
Ta funkcja może być szczególnie przydatna, jeśli masz wiele argumentów do połączenia:
SELECT CONCAT_WS(', ', 'Red', 2, 'Green', 456, 'Black');
Wynik:
Red, 2, Green, 456, Black
W takich przypadkach wystarczy określić separator tylko raz. W tym przykładzie określiłem przecinek i spację jako separator.
RDBMS, które mają CONCAT_WS()
funkcja obejmuje MySQL, MariaDB, SQL Server i PostgreSQL.
SQLite i Oracle nie mają funkcji CONCAT_WS()
działają, ale tak mieć operator konkatenacji ciągów (patrz poniżej).
Operator konkatenacji ciągów
Większość systemów RDBMS zawiera operator konkatenacji ciągów, który łączy operandy.
Jeśli używasz SQLite, jest to jedyna opcja.
Przykład:
SELECT 'Player' || 456;
Wynik:
Player456
Zauważ, że w MySQL musisz najpierw włączyć operator konkatenacji potoku.
To samo dotyczy MariaDB.
Serwer SQL
Powyższy przykład nie zadziała w SQL Server. W SQL Server użyj znaku plus (+
) operator konkatenacji ciągów.
Ponadto liczba będzie musiała zostać przekonwertowana na ciąg przed próbą połączenia:
SELECT 'Player' + CAST(456 AS varchar(3));
Wynik:
Player456
Oto, co się stanie, jeśli spróbuję to zrobić bez uprzedniej konwersji liczby na ciąg:
SELECT 'Player' + 456;
Wynik:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Player' to data type int.
SQL Server myśli, że próbujemy dodać dwie liczby (ponieważ +
jest również operatorem dodawania) i dlatego zwraca błąd, ponieważ jeden z operandów jest łańcuchem.