Hej, har en tabell som jag skulle behöva sortera i nummer ordning, men fältet den ska sortera ifrån innehåller även en till tre bokstäver i början, jag vill att SQL Server ska ignorera dem och sortera efter nummren. Du kan bara använda regular expressions för strängar i LIKE jämförelser, alltså inte i patindex etc. Nedanstående uttryck löser ditt problem, men grundproblemet är ändå att du ska sortera på en del av en sträng. Bryt upp detta redan från början och lagra det numeriska värdet i en egen kolumn istället. Denna sortering kommer att ta lång tid för en stor tabell, och inget index kan hjälpa den att gå snabbare.Sortering
Namnen kan se ut så här:
file_name
DC2323
DC4545
A3434
F43456
Någon som har någon bra lösning, har försökt med följande
<code>
order by cast(substring(file_name,patindex('[0-9]',file_name),len(file_name)-patindex('[0-9]',file_name)+1) as int)</code>
utan framsteg. Slutade med att jag inte fick några poster alls.
Några förslag?Sv: Sortering
cast(case
when isnumeric(substring(file_name,1,len(file_name))) = 1 then substring(file_name,1,len(file_name))
when isnumeric(substring(file_name,2,len(file_name))) = 1 then substring(file_name,2,len(file_name))
when isnumeric(substring(file_name,3,len(file_name))) = 1 then substring(file_name,3,len(file_name))
else substring(file_name,4,len(file_name))
end as int)