Регистрочуствительность при отборе данных.

Sclif81
Дата: 13.10.2003 11:40:25
Проблема в том что при запросе where field='ВаСя' выдаются все поля где в field и 'вася' и 'Вася' как избежать такого эфекта?
Павел Воронцов
Дата: 13.10.2003 11:42:03
поменять COLLATE
Sclif81
Дата: 13.10.2003 11:43:21
E.g. на какой? Я оставлял по умолчанию. Cyrillic_General_CI_AS NULL тобишь.
tpg
Дата: 13.10.2003 11:45:32
Поставь

Cyrillic_General_CS_AS
Glory
Дата: 13.10.2003 11:46:01
Если вам нужно регистрозависимость навсегда, то для этого у поля/таблицы/базы данных/сервера должен быть установлен соответсвующий collate.

Если регистрозависимомть нужно только в этом конкретном запросе, то можно так

declare @s1 varchar(50)

set @s1 = 'DeNis'

create table #t(f1 varchar(50))
insert #t values('DENIS')
insert #t values('denis')
insert #t values('DeNis')

select * from #t
select * from #t where f1 = @s1
select * from #t where cast(f1 as varbinary) = cast(@s1 as varbinary)

drop table #t

Только при последнем запросе об использовании поиска по индексу не может быть и речи.
Гнездин Петр
Дата: 13.10.2003 11:48:14
можно применить COLLATE для данного запроса:

... where field='ВаСя' COLLATE Cyrillic_General_CS_AI


CS = case sensitive
Sclif81
Дата: 13.10.2003 11:54:13
Спасибо, я вобщем то так и думал, MS как обычно навыдумывал стандартов :)
Sclif81
Дата: 13.10.2003 12:09:32
Хе-хе все работаит но тока на 2000, а вот на 6.5 не один из этих методов не сработал, потому про COLLATE и Cast он слыхам не слыхивал :)
Glory
Дата: 13.10.2003 12:11:06
Cast он слыхам не слыхивал
А про convert тоже ???
Sclif81
Дата: 13.10.2003 12:18:45
Тоже не слышал. Мне вообще интересно откуда он узнает что в него русские буквы можно писать, если COLLATE у полей нету...