2011-08-25 114 views
4

我這樣做是因爲我找不到具有相同原因的問題。原因是當我使用LIKE時,我得到一致結果,並且當我使用(=)運算符時,我得到「不一致結果」。當不使用通配符時'='運算符和LIKE有什麼區別

爲例
我有一個大VIEW(viewX)與多個內部連接和左連接,其中一些列具有空值,因爲數據庫定義允許這一點。

  1. 當我打開這個視圖時,我看到例如:8行作爲結果。
  2. 當我運行例如:select * from viewX where column_int = 34 and type_string = 'xyz',這個查詢顯示我100行,這是沒有定義在視圖的結果。 [INCONSISTENT]

BUT

  1. 當運行select * from viewX where column_int = 34 and type_string like 'xyz',此查詢我展示只有4行中,在該視圖中定義,當我打開(見1)是一致的[]

有沒有人想法,這裏發生了什麼?

+0

你可以發佈你的視圖定義嗎? – JamesHalsall

+0

視圖定義是SO大,請嘗試解決與問題文本的問題,VIEW結果是一致的 –

+5

無論如何張貼。 – Jacob

回答

2

從文檔.....

「每個SQL標準,等執行匹配基於每個字符的基礎上,從而它可以產生從=比較運算符不同的結果:」

更重要的(使用LIKE時):

字符串比較不區分大小寫,除非其中一個操作數是一個二進制串

從: http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

+0

我認爲這是原因,謝謝! –

+0

對於那種情況(in)的智慧敏感的+1。 – Johan

2

Per the MySQL documentationLIKE的功能與=的功能不同,尤其是當您有拖尾或前導空格時。

你需要發佈你的實際查詢,但我猜它與已知的差異有關。

相關問題