Sql server SQL char到varchar比较有效,为什么?

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 [=],

当where子句中的目标列是char(20)时,为什么下面的语句返回结果

s、 SUBLOTCODE被定义为char(20),只有在我取消注释添加所需空格的第三行时,我才希望得到结果。

VARCHAR(20)表示不超过20个字符的任何长度。

尾随空格不包括
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