I have a table called Table_1
Table_1
--
a varchar(10),
b varchar(20)
and Column a is the Primary Key.
INSERT INTO Table_1
(a ,b)
VALUES
('' , 'BLANK STRING')
INSERT INTO Table_1
(a ,b)
VALUES
(' ' ,'4 SPACES')
When i execute this Insertions, it inserts the First Record but on the Second one it gives Violation of Uniqueness
(1 row(s) affected)
Msg 2627, Level 14, State 1, Line 9
Violation of PRIMARY KEY constraint 'PK_Table_1'. Cannot insert duplicate key in object 'dbo.Table_1'.
The statement has been terminated.
My Questions is that; HOW can a Blank String or a String with 4(or any number) space charcters in it can be EQUAL? In my opinion they should not be regarded as the same! Is there a solution to this issue? That's not the case in Oracle Database.
Thanks for your help!
Regards,
Cem
According to ANSI standards (or is it SQL Server's implementation of ANSI...), anyway, for sorting purposes, leading blanks are ignored. (And Primary Keys are 'sorted'...)
Try these two statements, the first will provide the 'right' answer, and the second will provide the 'real' answer.
|||
SELECT len( (replicate( ' ', 4 )) )
SELECT datalength( (replicate( ' ', 4 )) )
You should check the setting of SET ANSI_PADDING. If you want behavior such as you find in ORACLE, you will need SET ANSI_PADDING ON. That way trailing blanks will not be trimmed from your VARCHAR insert statements.
http://msdn2.microsoft.com/en-us/library/ms187403.aspx
Dan
No comments:
Post a Comment