Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak dodać separator do połączonego ciągu w SQL Server — CONCAT_WS()

W SQL Server i Azure, jeśli chcesz połączyć dwa lub więcej ciągów, możesz użyć CONCAT() języka T-SQL funkcjonować. Podobnie jak w przypadku każdej podstawowej operacji konkatenacji, ta funkcja łączy ciągi razem, od końca do końca.

Ale co, jeśli musisz dodać separator między każdym ciągiem?

Na przykład możesz chcieć utworzyć listę ciągów oddzielonych przecinkami. W takim przypadku chciałbyś wstawić przecinek między każdym ciągiem. Tak:

Paris, France

Zamiast tego:

ParisFrance

Na szczęście T-SQL udostępnia funkcję CONCAT_WS() funkcja, która pomoże ci to zrobić. CONCAT_WS() funkcja działa tak samo jak CONCAT() funkcji, z wyjątkiem tego, że wymaga dodatkowego argumentu – separatora, którego chcesz użyć.

Oto przykład:

SELECT CONCAT_WS(',','Paris', 'France') AS Location;

Wynik:

Location    
------------
Paris,France

Możesz tam dodać spację, jeśli chcesz:

SELECT CONCAT_WS(', ','Paris', 'France') AS Location;

Wynik:

Location     
-------------
Paris, France

Separator

Nie ma nic do powiedzenia, że ​​separatorem musi być przecinek. Separatorem może być wyrażenie dowolnego typu znaku (charncharnvarchar lub varchar ).

Oto ten sam przykład, co poprzedni, z wyjątkiem tego, że używa innego separatora.

SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;

Wynik:

Location      
--------------
Paris - France

Przykład bazy danych

Oto przykład pobierania danych z bazy danych i łączenia dwóch kolumn w jedną oddzieloną przecinkiem:

SELECT CONCAT_WS(', ', city.Name, country.Name ) AS Location
FROM city
INNER JOIN country ON
city.CountryCode = country.Code
WHERE country.Code = 'THA';

Wynik:

Location                   
---------------------------
Bangkok, Thailand          
Nonthaburi, Thailand       
Nakhon Ratchasima, Thailand
Chiang Mai, Thailand       
Udon Thani, Thailand       
Hat Yai, Thailand          
Khon Kaen, Thailand        
Pak Kret, Thailand         
Nakhon Sawan, Thailand     
Ubon Ratchathani, Thailand 
Songkhla, Thailand         
Nakhon Pathom, Thailand

Wartości NULL

Jeśli którykolwiek z argumentów ma wartość NULL wartość, SQL Server pominie tę wartość i jej separator, ale nadal będzie przetwarzać pozostałe.

Przykład:

SELECT CONCAT_WS(', ','Paris', NULL, 'France') AS Location;

Wynik:

Location     
-------------
Paris, France

Separator wartości NULL

Jeśli sam separator to NULL wartość, operacja konkatenacji będzie nadal wykonywana, ale bez separatora.

Przykład:

SELECT CONCAT_WS(NULL,'Paris', NULL, 'France') AS Location;

Wynik:

Location   
-----------
ParisFrance

Jest to jedna z różnic między T-SQL i MySQL (MySQL ma również funkcję CONCAT_WS() funkcjonować). W MySQL, jeśli separatorem jest NULL wartość, konkatenacja daje w wyniku NULL wartość.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rozwiązywanie problemów z zawsze włączonymi grupami dostępności programu SQL Server

  2. Popraw wydajność zapytań SQL Server na dużych tabelach

  3. Jak SESSION_CONTEXT() działa w SQL Server

  4. Jak uzyskać ostatnio wstawiony identyfikator?

  5. Jak formatować liczby przecinkami w SQL Server