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 クエリのこの形式を使用する必要があります。これは、独自の SQL クエリを上記の SQL クエリ形式に変換する Xisam を使用しているためです。

4

1 に答える 1

7

CHAR(1)''に変わる' '...そう' 'ではありません < ' '。空の文字列を空の文字列のように扱いたい場合は、使用をやめてCHARを使用してVARCHARください。

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

結果:

x x -- not xx
于 2013-04-23T14:50:50.957 に答える