MySql 中的 操作符

2022-04-20 10:50:59 字數 1170 閱讀 8880

今天在學習資料庫的索引優化時,關於memory儲存引擎的的hash索引時,看到了操作符<=> ,這個操作符還是第一次見到,於是上網查了一下。我想大家應該知道 =  !=   <>操作符吧,特別說明一下<> 與!=都是不等於的意思,但是一般都是用<>來**不等於因為<>在任何sql中都起作用但是!=在sql2000中用到,則是語法錯誤,不相容的。好了,那我們的的<=>是什麼意思呢?

正確回答

1.和=號的相同點

像常規的=運算子一樣,兩個值進行比較,結果是0(不等於)或1(相等);換句話說:』a'<=>』b'得0和』a'<=>』a『得1。

2.和=號的不同點

和=運算子不同的是,null的值是沒有任何意義的。所以=號運算子不能把null作為有效的結果。所以:請使用<=>,

'a' <=> null0null<=> null得出1。和=運算子正相反,=號運算子規則是 'a'=null 結果是null 甚至null = null 結果也是null。順便說一句,mysql上幾乎所有的操作符和函式都是這樣工作的,因為和null比較基本上都沒有意義。

用處

當兩個運算元中可能含有null時,你需要乙個一致的語句。

1where col_a <=> ?

這裡的佔位符有可能是常量也有可能是null,當使用<=>運算子時,你沒有必要對查詢語句做任何修改。

相關操作符

除了 <=> ,還有兩個其他的操作符用來處理某個值和null做比較,也就是is nullandis not null。他們是ansi標準中的一部分,因此也可以用在其他資料庫中。而<=>只能在mysql中使用。

你可以把<=>當作mysql中的方言。

1'a

'isnull

==>'a

'<=>

null2'

a'isnot

null

==>

not('a'

<=>

null)

據此,你可以把這個查詢語句段改的更具移植性一點:

1where p.name is

null

MySQL的and操作符和or操作符

有時對where的要篩選的列不止乙個時,那麼就用到了and操作符和or操作符,and操作符顧名思義的意思是 並且 而or操作符的意思是 或者 比如以部門員工表為例 查詢部門編號為d001並且入職日期為 1985 02 02的員工編號,那麼就要用到and操作符 那如果是查詢部門編號為d001或者入職日...

MySQL中的比較操作符

對於 操作符,兩個值被比較,結果是0 不相等 或者1 相等 比較操作符 表示null安全的等價。這個比較操作符執行等價比較,和 操作符類似,但是如果兩個運算元都是null,會返回1,而不是返回null 如果其中乙個運算元是null,會返回0,而不是返回null。當參與比較的兩個運算元都可能包含nul...

ruby中的 操作符和 操作符

url str foo foo str bar foobar str foo foo str.object id 606274188 str bar foobar str.object id 606283808 str foobar foobarfoobar str.object id 606283...