从第一个字母开始而不是第一个字符开始排序varchar列?

时间:2010-11-30 21:26:51

标签: sql linq sql-order-by

使用LINQ或SQL,我怎么能有以下字符串,通常排序为:

"banana"
apple
coconut

排序为:

apple
"banana"
coconut

3 个答案:

答案 0 :(得分:0)

根据您的评论更新

IList<string> sorted = context.Terms.ToList()
    .OrderBy(t => Regex.Replace(t.Term, @"\W*","")).ToList();

答案 1 :(得分:0)

在SQL上,您可以对其进行排序,而不需要REGEX个函数本身,您可以使用PATINDEX。试试这个:

SELECT *
FROM Table
ORDER BY RIGHT(Column,LEN(Column)-patindex('%[a-zA-Z]%',Column)+1)

这样您就可以使用列的第一个字母对表进行排序,忽略其他字符

答案 2 :(得分:0)

您可以添加一个仅包含字母数字字符串的列,然后对此进行排序。

找到的函数RemoveNonAlphaCharacters here将允许您过滤掉非字母数字字符。如果表非常小并且性能不是问题,那么您可以简单地

ORDER BY RemoveNonAlphaCharacters(columnToClean)