tsql - In vs. Comparison Search Conditions -
i understand where 1 = '1'
returns true, , where 222 = convert(varchar, 222)
return true in t-sql.
but, when working in, can test_expression , subquery of different datatypes? example can test_expression int, , subquery varchar?
they can be: datatypes cast highest based on "datatype precedence" rules.
logically, x in (a,b,c)
x=a or x=b or x=c
of course. relevant contrived case using scalar values. really don't know if values cast float (the highest here) before comparison (..in..
) or cast per comparison (..or..or..
)
where cast(1 int) in ('1', cast(1.0 float), 1.0 /*decimal*/)
for subquery in in clause, column has data type cast per scalar rules
edit, after comment:
all datatypes implicitly cast
select top 1 * sys.columns 1 in (select cast('1' char(1)) sys.columns)
or
declare @intvar int = 1, @charvar char(1) = '1'; select top 1 * sys.columns @intvar in (select @charvar sys.columns)
Comments
Post a Comment