Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как включить/выключить регистровую зависимость в запросе? [D5, MSSQL]


big_bugzy ©   (2004-07-06 05:26:00) 

ситуация следующая: есть две таблицы, соедененные по уникальному значению.
Это значение символьное. Символы могут быть самые разные.
Запрос типа
Select *
From Table1 Inner Join Table2 on Table1.Un_Id = Table2.Un_Id
работает не корректно, потому что
к примеру значение Un_Id = 'Mt' и Un_Id='MT' воспринимаются одинаково, т.е. не учитывается регистр. Как заставить учитываться регистр букв?


Fay   (2004-07-06 12:24:00) [1]

2big_bugzy   (06.07.04 05:26)
Верный ответ в [4]. Не извращайся.
Удачи.


sniknik   (2004-07-06 12:00:00) [2]

> оно все равно группируется так же как и раньше
ну вообщето не должно, т.к. 'Mt' = 4D 74 а 'MT' = 4D 54


big_bugzy   (2004-07-06 11:43:00) [3]

Всем спасибо, сори за задержку, базу с символьными идентификаторами не я придумал, я ее только перегоняю в другую базу. Вариант с binary не проходит, оно все равно группируется так же как и раньше, т.е. без учета регистра символов. С колейтами пока не пробовал, убегаю уже... Где их изменять тоже не нашел...
Всем спасибо


sniknik   (2004-07-06 10:32:00) [4]

проверь
Select *
From Table1 Inner Join Table2 on CAST(Table1.Un_Id AS Binary(2)) = CAST(Table2.Un_Id  AS Binary(2))


bushmen   (2004-07-06 10:28:00) [5]

> А вообще-то Курдль прав на все 100

Это точно


Ega23   (2004-07-06 10:26:00) [6]

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

Тоже верно. А вообще-то Курдль прав на все 100.


bushmen   (2004-07-06 10:01:00) [7]

> Это непосредственно в запросе можно сделать

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


Курдль   (2004-07-06 09:51:00) [8]


> ситуация следующая: есть две таблицы, соедененные по уникальному
> значению.
> Это значение символьное. Символы могут быть самые разные.

И кому ТАКОЕ пришло в голову?
Пусть извинят меня завсегдатаи, но я снова попрошу перевести фразу на язык СУБД.
1. "Есть таблицы, имеющие отношение между собой по символьному внешнему ключу"
2. "Есть запрос, в котором требуется выбрать данные из 2-х таблиц методом соединения по уникальному полю.

Так вот. В том и другом случае Вам надо полагаться на принцип уникальности символьного поля, принятого СУБД. Если СУБД не обращает внимания на регистр, значит и запрос должен не учитывать.
Но мой совет - старайтесь избегать символьных ключей и индексов.


Ega23   (2004-07-06 09:36:00) [9]

Поменяй коллейшн в таблице на этих ключевых полях на CS

Это непосредственно в запросе можно сделать.


bushmen   (2004-07-06 09:12:00) [10]

> big_bugzy   (06.07.04 06:13) [4]

Поменяй коллейшн в таблице на этих ключевых полях на CS


Ozone   (2004-07-06 06:14:00) [11]

Тады не знаю... мож мастера чего скажут.


big_bugzy   (2004-07-06 06:13:00) [12]

несовсем, при установке можно настроить SQL чтобы он учитывал или не учитывал регистр. В мойм случае сервер регистр не учитывает, из-за этого возникла проблема...


Ozone   (2004-07-06 06:08:00) [13]

Извини, прочитал не внимательно.
НО, SQL изначально учитывает регистр, ИМХО.


big_bugzy   (2004-07-06 05:54:00) [14]

2Ozone ©  
нужно как раз наоборот
регистр нужно учитывать с UPPER ом регистр вообще не учтется


Ozone   (2004-07-06 05:50:00) [15]


SELECT UPPER(T1.Un_Id), UPPER(T2.Un_Id)
FROM T1 INNER JOIN T2 ON T1.Un_Id = T2.Un_Id


Наверх

Титульная страница Поиск, карта сайта Написать письмо