sql >> Databasteknik >  >> RDS >> Sqlserver

Hämta delsträng i SQL Server

Du kan använda reverse tillsammans med substring och charindex för att få det du letar efter:

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

Detta håller, även om du har flera . i din fil (t.ex.-hello.world.exe returnerar exe ).

Så jag lekte lite med det här, och det här är ett annat sätt (bara ett anrop för att reverse ):

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

Detta beräknar 10 000 000 rader på 25 sekunder mot 29 sekunder för den tidigare metoden.



  1. sökkriterieskillnad mellan Like vs Contains() i oracle

  2. Hur man installerar Squirrel SQL Client

  3. Hur importerar man befintliga *.sql-filer i PostgreSQL 8.4?

  4. Hur Ln()-funktionen fungerar i PostgreSQL