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

Pobierz podciąg w SQL Server

Możesz użyć reverse wraz z substring i charindex aby uzyskać to, czego szukasz:

select
    reverse(substring(reverse(filename), 1, 
        charindex('.', reverse(filename))-1)) as FileExt
from
    mytable

To się trzyma, nawet jeśli masz wiele . w twoim pliku (np.-hello.world.exe zwróci exe ).

Więc bawiłem się trochę z tym, a to jest inny sposób (tylko jedno wywołanie reverse ):

select 
    SUBSTRING(filename, 
        LEN(filename)-(CHARINDEX('.', reverse(filename))-2), 8000) as FileExt
from
    mytable

Oblicza to 10 000 000 wierszy w 25 sekund w porównaniu z 29 sekundami dla poprzedniej metody.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zamienić wiele znaków w SQL?

  2. Jak zmienić kolumnę z wartości Null na Not Null w SQL Server

  3. Jak odpytać pole DATETIME używając tylko daty w Microsoft SQL Server?

  4. Wykonaj procedurę składowaną w innej procedurze składowanej na serwerze SQL

  5. Jak uzyskać dane wyjściowe eksportu w rzeczywistym formacie CSV w SQL Server Management Studio?