Сортировать по имени, но игнорировать кавычки? - PullRequest
2 голосов
/ 17 сентября 2009

Есть ли в любом случае сортировать столбец по имени и игнорировать кавычки, являющиеся некоторыми элементами?

Например:

"Это круто"

Другая статья

Статья 2

Hello

будет сортировать как:

Другая статья

Статья 2

Hello

"Это круто"

Цитаты уже есть в базе данных ...

Ответы [ 5 ]

5 голосов
/ 17 сентября 2009

Зависит от того, какой язык вы используете. В MS SQL я использую команду REPLACE. Поэтому, если у меня есть таблица, пользователи, с именем столбца, по которому я сортирую, я делаю это, удаляя все двойные кавычки из строки:

SELECT     *
FROM         dbo.Users
ORDER BY REPLACE(firstName, '"', '')
3 голосов
/ 17 сентября 2009

Уловка, которая может быть приемлемой и более быстрой, чем решение на основе TRIM () или REPLACE (), заключается в том, чтобы сосредоточиться только на первом символе, являющемся кавычкой (или, как следствие, не буквенно-цифровым символом).

ORDER BY CASE LEFT(myCol, 1) 
      WHEN '"' THEN REPLACE(myCol, '"', '')
      ELSE myCol
    END CASE

Как правило, для больших наборов данных этот вид обработки должен выполняться во время загрузки, например, с добавлением столбцов для запросов, а не столбцов для отображения.

2 голосов
/ 17 сентября 2009
SELECT * FROM yourTable ORDER BY TRIM(BOTH '"' FROM title);
1 голос
/ 17 сентября 2009
SELECT *
 FROM table
ORDER BY CASE WHEN len(col) >= 2
              THEN REPLACE(LEFT(COL, 1), '"', '') 
                 + RIGHT(LEFT(col, LEN(col)-1), LEN(LEFT(col, LEN(col)-1))-1) 
                 + REPLACE(RIGHT(col, 1), '"', '')
              ELSE col
         END

в ORDER BY я исключаю двойные кавычки, заменяя их «внутри» 1-го и последнего символа на «». Конечно, это справедливо только при длине столбца> = 2.

0 голосов
/ 17 сентября 2009
SELECT name
FROM myTable
ORDER BY replace(name, '"', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...