1
私は2つのフィールドがvarchar(15)として定義されたテーブルを持っています。私は両方のフィールドに同じ値を持つレコードを知りたい:奇妙な結果を与えるFirebirdクエリ
select * from table where field1 = field2
私が一致するレコードがある知っているけれども、これはヌル結果を返します。私は間違って何をしていますか?
私は2つのフィールドがvarchar(15)として定義されたテーブルを持っています。私は両方のフィールドに同じ値を持つレコードを知りたい:奇妙な結果を与えるFirebirdクエリ
select * from table where field1 = field2
私が一致するレコードがある知っているけれども、これはヌル結果を返します。私は間違って何をしていますか?
これ以上の情報がありません(私のコメント参照)。この問題はインデックスが壊れている可能性があります。
このクエリを使用すると、Firebirdがインデックスを無視してフルテーブルスキャンを実行します。
結果が返された場合は、gfixを使用してデータベースの検証と修復を行い、データベースのバックアップと復元、またはインデックスの削除と再作成が必要になります。
どのFirebirdのバージョンとOSで、テーブルとすべてのインデックスの完全なDDLは何ですか? –
また、varcharとvarcharの空白を比較すると*が重要であることに注意してください。(charとcharまたはvarcharをcharと比較するのとは対照的に) –
@マーク、おそらく私は誤解しますが、CHARまたはVARCHARをCHARまたはFBのVARCHAR [here](http://www.firebirdfaq.org/faq237/)を参照してください。つまり、この例では末尾の空白は_重要ではありません。 – pilcrow