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

Jak podzielić ciąg, aby uzyskać dostęp do elementu x?

Nie wierzę, że SQL Server ma wbudowaną funkcję dzielenia, więc poza UDF, jedyną inną odpowiedzią, jaką znam, jest przejęcie funkcji PARSENAME:

SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2) 

PARSENAME pobiera ciąg i dzieli go na znak kropki. Jako drugi argument przyjmuje liczbę, która określa, który segment łańcucha ma zostać zwrócony (działając od tyłu do przodu).

SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 3)  --return Hello

Oczywistym problemem jest sytuacja, gdy ciąg zawiera już kropkę. Nadal uważam, że najlepszym sposobem jest użycie UDF... czy są jakieś inne sugestie?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuwanie zapamiętanej listy loginów i haseł w SQL Server Management Studio

  2. Zalety wydajności SQL Server 2016 Enterprise Edition

  3. Połącz wiele wierszy w jeden ciąg tekstowy za pomocą grupowania

  4. Zwróć listę funkcji partycji w SQL Server (T-SQL)

  5. Przegląd instrukcji PRINT w SQL Server