powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / сравнение varchar строк с varchar строками
22 сообщений из 22, страница 1 из 1
сравнение varchar строк с varchar строками
    #39767082
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, приветствую

имеется таблица, и запрос к ней

CREATE TABLE rela
(
predator varchar(10),
prey varchar(10)
)
INSERT INTO rela
VALUES
('mouse', 'cheese'),
('cat', 'mouse'),
('cat', 'bird'),
('dog', 'cat'),
('mouse', 'elephant'),
('lion', 'zebra')

SELECT * FROM rela
WHERE predator >= prey;

Результат

predator prey
mouse cheese
cat bird
dog cat
mouse elephant

Я не могу понять по какому принципу идет сравнение типов данных, в гугле четкого ответа не нашел.
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767087
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принцип называется... Collation.
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767097
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222Принцип называется... Collation.

а вы не могли бы в двух словах на моем примере рассказать как получается такое итоговое множество?
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767108
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaaleks222Принцип называется... Collation.

а вы не могли бы в двух словах на моем примере рассказать как получается такое итоговое множество?

в двух словах так: см. свой месыджь, там всё написано.
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767110
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaaleks222Принцип называется... Collation.

а вы не могли бы в двух словах на моем примере рассказать как получается такое итоговое множество?

В двух словах:
Ты не парься, ты просто ORDER BY напиши.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE t (x varchar(10) );
INSERT INTO x
VALUES
('mouse'
, ('cheese')
, ('cat')
, ('bird'),
, ('dog')
, ('elephant'),
, ('lion')
, ('zebra')
;
SELECT x FROM t ORDER BY x;
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767112
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermama,
А как вы представляете сравнение(упорядочивание) символьных данных?
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767129
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermama,

согласно collate раздаются веса всему и итог сравнивают
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767148
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaaleks222Принцип называется... Collation.

а вы не могли бы в двух словах на моем примере рассказать как получается такое итоговое множество?Вы даже не говорите, какой COLLATE у вашей базы.
Что возвращает
Код: sql
1.
SELECT DATABASEPROPERTYEX(DB_NAME(),'Collation')

?

Сравниваются символы слева направо, пока не встретятся разные в двух словах.
Тогда слово больше, если этот символ в этом слове больше.
Если такого символа не встретится, то больше считается более длинное слово. Иначе - равны.
В некоторых COLLATE обеспечивается сравнение не только одиночных символов, но и сочетаний символов.
Например, 'SH', 'CH', 'PH', которые в английском языке соответствуют одному звуку.
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767167
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapdermamaпропущено...


а вы не могли бы в двух словах на моем примере рассказать как получается такое итоговое множество?Вы даже не говорите, какой COLLATE у вашей базы.
Что возвращает
Код: sql
1.
SELECT DATABASEPROPERTYEX(DB_NAME(),'Collation')

?

Сравниваются символы слева направо, пока не встретятся разные в двух словах.
Тогда слово больше, если этот символ в этом слове больше.
Если такого символа не встретится, то больше считается более длинное слово. Иначе - равны.
В некоторых COLLATE обеспечивается сравнение не только одиночных символов, но и сочетаний символов.
Например, 'SH', 'CH', 'PH', которые в английском языке соответствуют одному звуку.


(No column name)
SQL_Latin1_General_CP1_CI_AS


Спасибо , буду разбираться!
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767225
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapdermamaпропущено...


а вы не могли бы в двух словах на моем примере рассказать как получается такое итоговое множество?Вы даже не говорите, какой COLLATE у вашей базы.
Что возвращает
Код: sql
1.
SELECT DATABASEPROPERTYEX(DB_NAME(),'Collation')

?

Сравниваются символы слева направо, пока не встретятся разные в двух словах.
Тогда слово больше, если этот символ в этом слове больше.
Если такого символа не встретится, то больше считается более длинное слово. Иначе - равны.
В некоторых COLLATE обеспечивается сравнение не только одиночных символов, но и сочетаний символов.
Например, 'SH', 'CH', 'PH', которые в английском языке соответствуют одному звуку.

все. - разобрался! спасибо за помощь.
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767427
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKсогласно collate раздаются веса всему и итог сравнивают

В конкретном случае использована латиница, так что с любым Collation результат должен быть один. Я, вроде, не ошибаюсь?

Что же автору вопроса непонятно в принципе сортировки - лично я понять не могу. Обычная сортировка текста...
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767431
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFTaPaKсогласно collate раздаются веса всему и итог сравнивают

В конкретном случае использована латиница, так что с любым Collation результат должен быть один. Я, вроде, не ошибаюсь?

Что же автору вопроса непонятно в принципе сортировки - лично я понять не могу. Обычная сортировка текста...
Впечатляет
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767436
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKВпечатляет

Что конкретно впечатляет-то?

Во времена былые и древние, когда еще не было персоналок от IBM, я сортировал текст переводя первые пять букв слова в число и сортируя уже числа. Все из-за того что локализаторы клона персоналки от HP не добрались до функции сравнения текста на русском.

В результате телефонный справочник конторы в 300 номеров сортировался пузырьком аж полчаса (в качестве языка был вшитый интерпретатор Basic-a). Вот это впечатляло. Кстати, это была у меня самая долгая по времени задача в то время. Обычные расчеты выполнялись быстро и определялись в основном скоростью вывода на термопечать.
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767451
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFTaPaKВпечатляет

Что конкретно впечатляет-то?

Во времена былые и древние, когда еще не было персоналок от IBM, я сортировал текст переводя первые пять букв слова в число и сортируя уже числа. Все из-за того что локализаторы клона персоналки от HP не добрались до функции сравнения текста на русском.

В результате телефонный справочник конторы в 300 номеров сортировался пузырьком аж полчаса (в качестве языка был вшитый интерпретатор Basic-a). Вот это впечатляло. Кстати, это была у меня самая долгая по времени задача в то время. Обычные расчеты выполнялись быстро и определялись в основном скоростью вывода на термопечать.Вот когда-то тема была глюк при сравнении строк
Внутри есть и ссылки интересные
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767453
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFTaPaKВпечатляет

Что конкретно впечатляет-то?


авториспользована латиница, так что с любым Collation результат должен быть один.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
*
FROM sys.objects
ORDER BY name COLLATE Latin1_General_CS_AI

SELECT 
*
FROM sys.objects
ORDER BY name COLLATE Latin1_General_BIN
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767460
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK
Код: sql
1.
ORDER BY name COLLATE Latin1_General_BIN



Грубо говоря - сортировка без учета регистра. Ни разу не доводилось применять...
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767464
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFTaPaK
Код: sql
1.
ORDER BY name COLLATE Latin1_General_BIN



Грубо говоря - сортировка без учета регистра. Ни разу не доводилось применять...
Может хватит придумывать...

авторBinary collations sort data based on the sequence of coded values that are defined by the locale and data type. They are case sensitive.
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767465
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но опять же Cyrillic_General_BIN и Latin1_General_BIN в вышеприведенном примере дадут одинаковый результат. Пока среди списка сортируемых слов не появятся слова, например, на кириллице...
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767466
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFНо опять же Cyrillic_General_BIN и Latin1_General_BIN в вышеприведенном примере дадут одинаковый результат. Пока среди списка сортируемых слов не появятся слова, например, на кириллице...
хватит придумывать 14604590
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767468
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKМожет хватит придумывать...

Для символов латиницы верно то что я написал - что не так? Хотя, конечно, можно придраться и вспомнить другие символы...
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39767469
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFTaPaKМожет хватит придумывать...

Для символов латиницы верно то что я написал - что не так? Хотя, конечно, можно придраться и вспомнить другие символы...
какой упорный
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
select 'A'  collate Cyrillic_General_CI_AS union all
select 'B'  collate Cyrillic_General_CI_AS union all
select 'aa' collate Cyrillic_General_CI_AS union all
select 'bb' collate Cyrillic_General_CI_AS
order by 1
/*
A
aa
B
bb
*/

select 'A'  collate Latin1_General_Bin union all
select 'B'  collate Latin1_General_Bin union all
select 'aa' collate Latin1_General_Bin union all
select 'bb' collate Latin1_General_Bin
order by 1
/*
A
B
aa
bb
*/
...
Рейтинг: 0 / 0
сравнение varchar строк с varchar строками
    #39768498
pahanitto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос на самом деле в другом.... а зачем ты делаешь что-то>что-то ?
что ты хотел получить?
на то LIKE есть = есть и тд.... сравнение строк дело неблагодарное...
а как говорили коллейшен ... то да.... разные цыфирки на каждую буковку если совсем просто... а сравнивает то цифирки
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / сравнение varchar строк с varchar строками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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