Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вземете подниз в SQL Server

Можете да използвате reverse заедно с substring и charindex за да получите това, което търсите:

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

Това издържа, дори ако имате няколко . във вашия файл (напр.-hello.world.exe ще върне exe ).

Така че си поиграх малко с това, а това е друг начин (само едно извикване на reverse ):

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

Това изчислява 10 000 000 реда за 25 секунди срещу 29 секунди за предишния метод.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да сравня 2 реда от една и съща таблица (SQL Server)?

  2. Как да добавите регистрационен файл към база данни на SQL Server (T-SQL)

  3. Използвате ли правилните инструменти за наблюдение на производителността на базата данни?

  4. Как да намерите дублирани записи с помощта на клауза Group by и Having в SQL Server - SQL Server / TSQL Урок, част 132

  5. Как мога да получа списъка с таблици в съхранената процедура?