1
我有一個表定義爲varchar(15)的兩個字段。我想知道哪些記錄在這兩個領域具有相同的價值:火鳥查詢給出奇怪的結果
select * from table where field1 = field2
這個返回一個空的結果,雖然我知道有匹配的記錄。我究竟做錯了什麼?
我有一個表定義爲varchar(15)的兩個字段。我想知道哪些記錄在這兩個領域具有相同的價值:火鳥查詢給出奇怪的結果
select * from table where field1 = field2
這個返回一個空的結果,雖然我知道有匹配的記錄。我究竟做錯了什麼?
沒有更多信息(請參閱我的意見),問題可能是索引損壞。當您嘗試時會發生什麼:
select * from table where field1 || '' = field2 || ''
使用此查詢將使Firebird忽略索引(如果有)並執行全表掃描。
如果這確實會返回結果,那麼您需要驗證並修復數據庫(使用gfix)並備份和恢復數據庫或刪除並重新創建索引。
什麼是Firebird版本和操作系統,表和所有索引的完整DDL是什麼? –
另外請注意,在比較varchar和varchar空白*是*顯着(與將char或char與char char進行比較相反) –
@Mark,或許我誤解了,但在將CHAR或VARCHAR與CHAR進行比較時會忽略尾隨空格或FB中的VARCHAR。見[這裏](http://www.firebirdfaq.org/faq237/)。也就是說,在這個例子中,尾隨空格是不重要的。 – pilcrow