Wednesday, 22 June 2011

Auto Trimming - Whitespace Removal in SQL Server/MSSQL

I got really angry about this one yesterday as I can't see one possible reason why this "feature" would be required.

If you run this script, the whitespace padded string is also returned along with the unpadded string.

CREATE TABLE #t ([col1] varchar(100))

INSERT INTO #t ([col1]) VALUES ('hello')
INSERT INTO #t ([col1]) VALUES ('hello     ')

SELECT '''' + [col1] + '''', LEN([col1]), DATALENGTH([col1])
FROM #t

SELECT * FROM #t WHERE [col1] = 'hello'
SELECT * FROM #t WHERE [col1] = 'hello     '

DROP TABLE #t


How can this possibly be right? If I want 'hello     ' to be returned, then return 'hello     ' not 'hello'. These are two very different strings!

Peoples arguments are why would want to save that and other such silly statements. My philosophy is, if I can think of it, it will happen! I can think of many cases where it would be beneficial to have the padding - dealing with old systems or external systems over which control is not possible.

Now I know that SQL Server does this stupid thing, I can account for it - but seriously - why?? It's stupid!

Oh and ANSI_PADDING - makes no odds!

No comments:

Post a Comment