2016-09-15 9 views
0

私は結果セットがクロスチェックするためのテーブルC.SQL - ブランク値

をターゲットにコピーされている二つのテーブルAとB 間の結合か、私は、共通の列に基づいてすべての3つのテーブル間の結合を行います。一致するレコードの場合は 、C.yyy = a.xxxが該当します。これは、非ブランクの値とヌル値で正常に動作します。 しかし、問題は空白の文字列です。 a.xxxが空白の場合、c.yyyも空白にする必要があります。これは1つの環境では問題ありません。しかし、別の環境では、a.xxxが空白のときにc.yyyがnullになります。

1つの環境で動作が変化します。どうしてこんなことに?

注:クエリは両方の環境で同じです。また、両方のフィールドはVarcharです。

+0

テーブル作成スクリプトを提供できますか? – x13

+1

ようこそスタックオーバーフロー。現在の質問は、あなたが参照しているクエリやデータなどの重要な情報を省略したため、本当に答えることはできません。クエリとデータを表示してください。 –

答えて

0

空白とNULLの比較の結果は、環境のANSI NULLとANSIパディング設定によって異なります。 varcharの空白または末尾の空白を比較するときは、LIKE演算子を使用する必要があります。これは、パディングされた長さに関係なく、すべての文字を考慮に入れているためです。 詳細については、https://support.microsoft.com/en-us/kb/316626を参照してください。