Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
ВнизКак включить/выключить регистровую зависимость в запросе? Найти похожие ветки
← →
big_bugzy (2004-07-06 05:26) [0]ситуация следующая: есть две таблицы, соедененные по уникальному значению.
Это значение символьное. Символы могут быть самые разные.
Запрос типа
Select *
From Table1 Inner Join Table2 on Table1.Un_Id = Table2.Un_Id
работает не корректно, потому что
к примеру значение Un_Id = "Mt" и Un_Id="MT" воспринимаются одинаково, т.е. не учитывается регистр. Как заставить учитываться регистр букв?
← →
Ozone © (2004-07-06 05:50) [1]
SELECT UPPER(T1.Un_Id), UPPER(T2.Un_Id)
FROM T1 INNER JOIN T2 ON T1.Un_Id = T2.Un_Id
← →
big_bugzy (2004-07-06 05:54) [2]2Ozone ©
нужно как раз наоборот
регистр нужно учитывать с UPPER ом регистр вообще не учтется
← →
Ozone © (2004-07-06 06:08) [3]Извини, прочитал не внимательно.
НО, SQL изначально учитывает регистр, ИМХО.
← →
big_bugzy (2004-07-06 06:13) [4]несовсем, при установке можно настроить SQL чтобы он учитывал или не учитывал регистр. В мойм случае сервер регистр не учитывает, из-за этого возникла проблема...
← →
Ozone © (2004-07-06 06:14) [5]Тады не знаю... мож мастера чего скажут.
← →
bushmen © (2004-07-06 09:12) [6]> big_bugzy (06.07.04 06:13) [4]
Поменяй коллейшн в таблице на этих ключевых полях на CS
← →
Ega23 © (2004-07-06 09:36) [7]Поменяй коллейшн в таблице на этих ключевых полях на CS
Это непосредственно в запросе можно сделать.
← →
Курдль © (2004-07-06 09:51) [8]
> ситуация следующая: есть две таблицы, соедененные по уникальному
> значению.
> Это значение символьное. Символы могут быть самые разные.
И кому ТАКОЕ пришло в голову?
Пусть извинят меня завсегдатаи, но я снова попрошу перевести фразу на язык СУБД.
1. "Есть таблицы, имеющие отношение между собой по символьному внешнему ключу"
2. "Есть запрос, в котором требуется выбрать данные из 2-х таблиц методом соединения по уникальному полю.
Так вот. В том и другом случае Вам надо полагаться на принцип уникальности символьного поля, принятого СУБД. Если СУБД не обращает внимания на регистр, значит и запрос должен не учитывать.
Но мой совет - старайтесь избегать символьных ключей и индексов.
← →
bushmen © (2004-07-06 10:01) [9]> Это непосредственно в запросе можно сделать
Можно, но т.к. эти поля у него ключевые, то в запросах скорее всего они будут часто встречаться. А каждый раз писать длинные строки - это, на мой взгляд не удобно.
← →
Ega23 © (2004-07-06 10:26) [10]Можно, но т.к. эти поля у него ключевые, то в запросах скорее всего они будут часто встречаться. А каждый раз писать длинные строки - это, на мой взгляд не удобно.
Тоже верно. А вообще-то Курдль прав на все 100.
← →
bushmen © (2004-07-06 10:28) [11]> А вообще-то Курдль прав на все 100
Это точно
← →
sniknik © (2004-07-06 10:32) [12]проверь
Select *
From Table1 Inner Join Table2 on CAST(Table1.Un_Id AS Binary(2)) = CAST(Table2.Un_Id AS Binary(2))
← →
big_bugzy (2004-07-06 11:43) [13]Всем спасибо, сори за задержку, базу с символьными идентификаторами не я придумал, я ее только перегоняю в другую базу. Вариант с binary не проходит, оно все равно группируется так же как и раньше, т.е. без учета регистра символов. С колейтами пока не пробовал, убегаю уже... Где их изменять тоже не нашел...
Всем спасибо
← →
sniknik © (2004-07-06 12:00) [14]> оно все равно группируется так же как и раньше
ну вообщето не должно, т.к. "Mt" = 4D 74 а "MT" = 4D 54
← →
Fay © (2004-07-06 12:24) [15]2big_bugzy (06.07.04 05:26)
Верный ответ в [4]. Не извращайся.
Удачи.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c