Сортировать столбец varchar, начинающийся с первой буквы вместо первого символа? - PullRequest
1 голос
/ 01 декабря 2010

Используя LINQ или SQL, как я могу получить следующие строки, обычно отсортированные как:

"banana"
apple
coconut

Сортировать по:

apple
"banana"
coconut

Ответы [ 3 ]

0 голосов
/ 01 декабря 2010

В SQL вы можете сортировать его без необходимости REGEX функций как таковых, вы можете использовать PATINDEX.Попробуйте это:

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

Таким образом, вы сортируете таблицу по первой букве столбца, игнорируя остальные символы

0 голосов
/ 01 декабря 2010

Вы можете добавить столбец, содержащий только буквенно-цифровую строку, а затем отсортировать по нему.

Функция RemoveNonAlphaCharacters найдена здесь позволит вам отфильтровать не буквенно-цифровые символы.Если таблица очень мала и производительность не является проблемой, вы можете просто

ORDER BY RemoveNonAlphaCharacters(columnToClean)
0 голосов
/ 01 декабря 2010

Обновлено на основе вашего комментария

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