sql >> Databáze >  >> RDS >> Sqlserver

Jak rozdělím řetězec, abych měl přístup k položce x?

Nevěřím, že SQL Server má vestavěnou funkci rozdělení, takže kromě UDF jedinou jinou odpovědí, kterou znám, je unést funkci PARSENAME:

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

PARSENAME vezme řetězec a rozdělí ho na znak tečky. Jako druhý argument bere číslo a toto číslo určuje, který segment řetězce má být vrácen (pracuje odzadu dopředu).

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

Zjevný problém je, když řetězec již obsahuje tečku. Stále si myslím, že použití UDF je nejlepší způsob ... nějaké další návrhy?



  1. MySQL:jak získat rozdíl mezi dvěma časovými razítky v sekundách

  2. Jak nahradit konkrétní hodnoty ve sloupci databáze Oracle?

  3. Jak používat ROW_NUMBER ve sqlite

  4. SELECT nebo INSERT řádek v jednom příkazu