0

我有一个tbl带有以下记录的 Microsoft SQL 表:

clmn1 (smallint NOT NULL) = '2012'
clmn2 (char (10) NOT NULL) = '620100' 
clmn3 (char (1) NOT NULL) = ''

当我执行以下查询时:

select * 
from tbl with (rowlock)  
where clmn1 = 2012 and clmn2 = '620100' and clmn3 <= ' '

然后找到上面的行,是正确的。

但是在执行以下查询时:

select * 
from tbl with (rowlock)  
where clmn1 = 2012 and clmn2 = '620100' and clmn3 < ' '

然后它没有发现任何不正常的东西。因为 clmn3 是空的 ('')。'' < ' ' = true.

必须使用 2 个 sql 查询的这种格式,因为我们正在使用 Xisam 将他自己的 sql 查询转换为上述 sql 查询格式。

4

1 回答 1

7

CHAR(1)变成......所以不是。''_ 如果您希望将空字符串视为空字符串,请停止使用并使用.' '' ' < ' 'CHARVARCHAR

DECLARE @c CHAR(1);
SET @c = '';
SELECT 'x' + @c + 'x';

结果:

x x -- not xx
于 2013-04-23T14:50:50.957 回答