First create a function as folloing.
CREATE FUNCTION fn_AlphaNumSorting
(
@input varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
declare @num varchar(50)
declare @space varchar(50)
declare @index int
set @index = 1set @num = LEFT(SUBSTRING(@input, PATINDEX(‘%[0-9.-]%’, @input), 8000), PATINDEX(‘%[^0-9.-]%’, SUBSTRING(@input, PATINDEX(‘%[0-9.-]%’, @input), 8000) + ‘X’)-1)
set @space = replicate(‘ ‘, 20 – len(@num))return replace(@input, @num, @space + @num)
END
(
@input varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
declare @num varchar(50)
declare @space varchar(50)
declare @index int
set @index = 1set @num = LEFT(SUBSTRING(@input, PATINDEX(‘%[0-9.-]%’, @input), 8000), PATINDEX(‘%[^0-9.-]%’, SUBSTRING(@input, PATINDEX(‘%[0-9.-]%’, @input), 8000) + ‘X’)-1)
set @space = replicate(‘ ‘, 20 – len(@num))return replace(@input, @num, @space + @num)
END
Now you can use this like
select * from <tableName> order by dbo.fn_AlphaNumSorting(<columnName>)