? Как заставить 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