Сравнение строк
От: Zberik  
Дата: 12.12.05 09:42
Оценка:
? Как заставить MSSQL сервер различать строки, оканчивающиеся пробелами ?

Условия работы:
База данных имеет collation Latin1_General_BIN
sp_dboption 'DBNAME', 'ANSI padding', 'ON'

При создании индекса MSSQL сравнивает строки. На руках есть таблица, в которой поле, на котором хочу уникальный индекс, имеет значения типа 'ASDF' и 'ASDF ' (3 spaces). Кроме типа varbinary, что еще можете посоветовать?
Желательно бы чтобы работало с varchar.




Вот как заставить сервер различать подобные данные???





IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[K]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
DROP TABLE [K]
ELSE
PRINT 'CANNOT DROP TABLE [K]'
GO

CREATE TABLE K(
NR int IDENTITY (1, 1) NOT NULL ,
KOS varchar (40) COLLATE Latin1_General_BIN NULL ,
CONSTRAINT [K_NR] PRIMARY KEY CLUSTERED
( NR ) ON [PRIMARY]
) ON [PRIMARY]
GO

INSERT INTO K( KOS ) VALUES( 'ASDF' );
INSERT INTO K( KOS ) VALUES( 'ASDF ' ); -- 3 spaces
INSERT INTO K( KOS ) VALUES( 'asdf' );
GO

SELECT 'KOS' = '>' + KOS + '<' FROM K
GO

CREATE UNIQUE INDEX KEY_KOS_0 on K ( KOS ); -- Здесь конечно же будет ошибка
GO
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.