powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сортировка строки, начинающейся с спецсимволов и знаков
13 сообщений из 13, страница 1 из 1
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882771
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вроде по сортировке строки понятно.
Спец символы и цифры находятся выше алфавита.
Но что не так с " ' " ? почему он "игнорируется" и значащим становится второй символ?

И вопрос 2, как заставить sql пересмотреть позицию и отнести " ' " к другим спец символам.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
;WITH	info AS
(
	SELECT	CAST(N'\' AS NVARCHAR(25)) AS NAME
	UNION ALL
	SELECT	N'A'
	UNION ALL
	SELECT	N'`B'
	UNION ALL
	SELECT	N'''B'
	UNION ALL
	SELECT	N'"B'
	UNION ALL
	SELECT	N'С'
	UNION ALL
	SELECT	N'5'
)

SELECT	*
FROM	info
ORDER BY NAME;
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882773
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что такой collation.
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882781
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей АлексеевичПотому что такой collation.

перепробовал десяток collation из Latin все реагируют идентично. Искать среди неLatin так боюсь, что выползут еще приколы.
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882787
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dzianis, а "С" у вас намеренно русская?

Хотите, чтобы строки всегда были последними - так явно и напишите:


SELECT *
FROM info
ORDER BY CASE WHEN NAME LIKE '[0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END, NAME;
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882886
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DzianisНо что не так с " ' " ? почему он "игнорируется" и значащим становится второй символ?
Dzianisперепробовал десяток collation из Latin все реагируют идентично.В BIN коллейшенах одинарная кавычка не игнорируется, она будет вначале. Но символ апострофа, и слэш будут в конце. Такой у них порядковый номер.

А в не-BIN коллейшенах одинарная кавычка да, игнорируется.
Мне это тоже странно, но вот так решили стандартизаторы.

Т.е. вот это утверждение:DzianisСпец символы и цифры находятся выше алфавита.неверно, откуда вы это взяли? Они не "в конце".
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882967
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgТ.е. вот это утверждение:DzianisСпец символы и цифры находятся выше алфавита.неверно, откуда вы это взяли? Они не "в конце".

Это субъективная фраза была.
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882978
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MinamotoDzianis, а "С" у вас намеренно русская?

Хотите, чтобы строки всегда были последними - так явно и напишите:


SELECT *
FROM info
ORDER BY CASE WHEN NAME LIKE '[0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END, NAME;

Спс. Вариант такой подойдет.
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882983
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DzianisЭто субъективная фраза была.А, это "желание"?
Понятно.

MinamotoХотите, чтобы строки всегда были последними - так явно и напишите:
SELECT *
FROM info
ORDER BY CASE WHEN NAME LIKE '[0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END, NAME;Не, не получится :-(

Автору, очевидно, нужна сортировка не только по первому символу, но и по остальным.
А в этом запросе учитывается только первый символ, а если кавычка будет вторым, то сортировка уровнем ниже получится "неправильной".

Можно, конечно, добавить ещё парочку CASE, что бы сортировалось хотя бы по первым 3м символам.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
;WITH	info AS
(
	SELECT	CAST(N'\' AS NVARCHAR(25)) AS NAME
	UNION ALL
	SELECT	N'AA'
	UNION ALL
	SELECT	N'A`B'
	UNION ALL
	SELECT	N'A''B'
	UNION ALL
	SELECT	N'A"B'
	UNION ALL
	SELECT	N'AC'
	UNION ALL
	SELECT	N'A''C'
	UNION ALL
	SELECT	N'AD'
	UNION ALL
	SELECT	N'A''D'
	UNION ALL
	SELECT	N'A5'
	UNION ALL
	SELECT	N'ABC'
	UNION ALL
	SELECT	N'AB''C'
	UNION ALL
	SELECT	N'ABD'
	UNION ALL
	SELECT	N'AB''D'
)

SELECT	
	CASE WHEN NAME LIKE '[0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END,
	CASE WHEN NAME LIKE '[^][0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END,
	CASE WHEN NAME LIKE '[^][^][0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END,
	*
FROM	info
ORDER BY 
	CASE WHEN NAME LIKE '[0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END,
	CASE WHEN NAME LIKE '[^][0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END,
	CASE WHEN NAME LIKE '[^][^][0-9a-zA-Zа-яА-Я]%' THEN 1 ELSE 0 END,
	NAME 
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882985
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

почему в сортировке просто не заменить кавычку
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882991
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKalexeyvg,

почему в сортировке просто не заменить кавычкуПотому что спецсимволов много, не только лишь одна кавычка.
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39882992
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgTaPaKalexeyvg,

почему в сортировке просто не заменить кавычкуПотому что спецсимволов много, не только лишь одна кавычка.Хотя, если действительно игнорируется, то это самое простое, ORDER BY REPLACE...
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39883292
Dzianis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgTaPaKalexeyvg,

почему в сортировке просто не заменить кавычкуПотому что спецсимволов много, не только лишь одна кавычка.

Но только кавычка (апостроф) является частью языка и учитывается в сортировке по "другому" чем спец символы.

к сожалению это легкий костыль edition для ситуации, когда программисты на UI сортируют результат запроса в памяти на Java по своим правилам. И приходится для background процесса реализовывать "высокую степень похожести" сейчас.
Чтобы дать программистам время прикрутить аналогичную как в UI сортировку в background процессе. order by case .. вполне достаточно.

Спасибо.
...
Рейтинг: 0 / 0
Сортировка строки, начинающейся с спецсимволов и знаков
    #39883309
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DzianisalexeyvgПотому что спецсимволов много, не только лишь одна кавычка.Но только кавычка (апостроф) является частью языка и учитывается в сортировке по "другому" чем спец символы.Понятно. Да, эти тонкости я не знаю...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сортировка строки, начинающейся с спецсимволов и знаков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]