"AZDesign" wrote in message ...
Firebird 2.5.0.26074 (x64)
Делаем табличку:
Create table Words
(Word VarChar(250) character set WIN1251 Unique);
Затем вставляем строку:
Insert into Words(Word) values('');
и еще одну:
Insert into Words(Word) values(' ');
получаем:
Statement failed, SQLSTATE = 23000
violation of PRIMARY or UNIQUE KEY constraint "INTEG_3" on table "Words"
Замена VarChar на Char ничего не меняет.
т.е. строки состоящие из один пробелов считаются одинаковыми, независимо от
количества пробелов в каждой из них.
Это так и должно быть или баг?
Так и должно быть. Стандарт.
Хелен Борри пишет, что в Char завершающие пробелы не являются значащими
(т.е. отбрасываются), а в VarChar завершающие пробелы являются значащими
(т.е. сохраняются).
На практике получается не так.
Хранение и сравнение не есть одно и то же, не нужно их путать. Кроме того,
CHAR
всегда дополняется пробелами до объявленной длины. А как они хранятся тебя не
должно волновать.
--
Хорсун Влад