Sql server SQL char到varchar比较有效,为什么?
当where子句中的目标列是char(20)时,为什么下面的语句返回结果 s、 SUBLOTCODE被定义为char(20),只有在我取消注释添加所需空格的第三行时,我才希望得到结果。VARCHAR(20)表示不超过20个字符的任何长度。尾随空格不包括Sql server SQL char到varchar比较有效,为什么?,sql-server,sql-server-2008,Sql Server,Sql Server 2008,当where子句中的目标列是char(20)时,为什么下面的语句返回结果 s、 SUBLOTCODE被定义为char(20),只有在我取消注释添加所需空格的第三行时,我才希望得到结果。VARCHAR(20)表示不超过20个字符的任何长度。尾随空格不包括LIKE比较中右侧的表达式 SELECT CASE WHEN '168531' = '168531 ' THEN 'Y' ELSE 'N' END AS [=],
LIKE
比较中右侧的表达式
SELECT CASE
WHEN '168531' = '168531 ' THEN 'Y'
ELSE 'N'
END AS [=],
CASE
WHEN '168531' LIKE '168531 ' THEN 'Y'
ELSE 'N'
END AS [Like RHS],
CASE
WHEN '168531 ' LIKE '168531' THEN 'Y'
ELSE 'N'
END AS [Like LHS]
返回
= Like RHS Like LHS
---- -------- --------
Y N Y
是的,但是OP假设字符(20)中的值将被空格填充-这是问题需要解决的部分。:)
= Like RHS Like LHS
---- -------- --------
Y N Y