sql - VARCHAR vs VARCHAR(X) -


this results in 'b':

declare @name varchar(20)=' s' if (@name null or @name='')    select 'a' else    select 'b' 

whereas, results in 'a'.

declare @name varchar=' s' if (@name null or @name='')    select 'a' else    select 'b' 

the difference varchar(20) vs varchar.

what reason of odd behaviour?

sql server defaults varchar of unspecified length length of 1. , when taken in conjunction microsoft's interpretation of ansi/iso sql-92 (ref here) results in padding compared strings equal length during equality comparisons, resulting in ' ' being = '', hence non-intuitive 'a' in second test.


Comments