code_junkie

Sorting nvarchar column as integer

Nov 11th, 2011
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. ORDER BY
  2. CASE WHEN ISNUMERIC(column) = 1 THEN 0 ELSE 1 END,
  3. CASE WHEN ISNUMERIC(column) = 1 THEN CAST(column AS INT) ELSE 0 END,
  4. column
  5.  
  6. Declare @Temp Table(Data VarChar(20))
  7.  
  8. Insert Into @Temp Values('1')
  9. Insert Into @Temp Values('2')
  10. Insert Into @Temp Values('3')
  11. Insert Into @Temp Values('10')
  12. Insert Into @Temp Values('11')
  13. Insert Into @Temp Values('aaaa')
  14. Insert Into @Temp Values('aaab')
  15. Insert Into @Temp Values('b')
  16. Insert Into @Temp Values('ba')
  17. Insert Into @Temp Values('ba')
  18.  
  19. Select * From @Temp
  20. Order By Case When IsNumeric(Data) = 1
  21. Then Right('0000000000000000000' + Data, 20)
  22. Else Data End
  23.  
  24. SELECT * FROM TableName
  25. ORDER BY CASE WHEN 1 = IsNumeric(ColumnName) THEN Cast(ColumnName AS INT) END
  26.  
  27. select * from Table order by ascii(Column)
  28.  
  29. SELECT * FROM foo ORDER BY CAST(somecolumn AS int);
Add Comment
Please, Sign In to add comment