![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как включить/выключить регистровую зависимость в запросе? [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