Hi,
Use below script:
USE [demo]
GO
CREATE TABLE [dbo].[Table_1](
[password] [varchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[Table_1] ([password]) VALUES (N'1-1-1')
GO
INSERT [dbo].[Table_1] ([password]) VALUES (N'1-10')
GO
INSERT [dbo].[Table_1] ([password]) VALUES (N'1-1')
GO
INSERT [dbo].[Table_1] ([password]) VALUES (N'2')
GO
INSERT [dbo].[Table_1] ([password]) VALUES (N'2-1-3')
GO
INSERT [dbo].[Table_1] ([password]) VALUES (N'2-1')
GO
SELECT password FROM dbo.Table_1 ORDER BY
CASE WHEN PATINDEX('%[0-9]%',password) > 1 THEN
LEFT(password,PATINDEX('%[0-9]%',password)-1)
ELSE
password
END ,
CASE WHEN PATINDEX('%[0-9]%',password) > 1 THEN
CAST(SUBSTRING(password,PATINDEX('%[0-9]%',password),LEN(password)) as float)
ELSE
NULL
END
GO