sql >> Base de Datos >  >> RDS >> Sqlserver

Obtener subcadena en SQL Server

Puedes usar reverse junto con substring y charindex para conseguir lo que buscas:

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

Esto se mantiene, incluso si tiene varios . en su archivo (p. ej.-hello.world.exe devolverá exe ).

Así que estaba jugando un poco con esto, y esta es otra forma (solo una llamada a reverse ):

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

Esto calcula 10 000 000 de filas en 25 segundos frente a los 29 segundos del método anterior.