MySQL操作符


簡要介紹MySQL操作符
  常用:
    算術運算符、比較操作符、邏輯操作符、位運算符……

一、算術運算符
  +:加   -:減   *:乘   /:除,返回商   %,mod():除,返回余數
mysql> select  3%2,mod(3,2); +------+----------+
| 3%2  | mod(3,2) |
+------+----------+
|    1 |        1 |
+------+----------+
注意:除法運算中,若除數為0(無意義),是非法除數,返回結果為null。

二、比較操作符
  ---利用比較操作符在DQL語句中實現按條件的檢索

示例用表:球員信息表player、比賽信息表matches
1、獲得聯盟會員號碼為7060的球員信息 mysql> select * from player where leagueno=’7060’; 2、獲得沒有聯盟會員號碼的球員信息 mysql> select * from player where leagueno=null; error……報錯 mysql> select * from player where leagueno <=> null; 或 mysql> select * from player where leagueno is null; <=>”安全的等於運算符:和“=”類似,在操作數相等時值為 1,不同之處在於即使 操作的值為 NULL 也可以正確比較。 3、找出獲勝局數等於2且輸掉局數等於3的比賽信息 條件中可以進行列值的成對比較 mysql> select * from matches where (won,lost)=(2,3); 注意:條件(2,4)>(1,3)並不等於(2>1) and (4>3),而是等於(2>1) or (2=1 and 4>3)  說明:使用不同運算符的成對比較在轉換為標量表達式比較時,都有各自的轉換規則。 4、between的范圍比較:使用BETWEEN …AND… 操作符可以測試列值是否在一個取值范圍之內 例:找出1962—1964年之間出生的球員的編號、出生日期 mysql> select playerno,birth_date from players where birth_date between '1962-01-01' and '1964-01-01'; 5、in操作符:測試一個列值是否在一個值列表中(值列表中可以是字面量、列或標量子查詢) 例1:得到那些出生在1962、1963或1970的球員的編號、出生年份 mysql> select playerno,year(birth_date) from players where year(birth_date) in (1962,1963,1970); 例2:兩局獲勝或者兩局輸掉的所有比賽 mysql> select * from matches where 2 in (won,lost); 例3:比分為3比1和3比2的所有比賽(in的成對比較) mysql> select * from matches where (won,lost) in ((3,1),(3,2)); 說明:在MySQL內部,in轉換成or操作,not in轉換成and操作 6、 like操作符:實現模式匹配查詢或者模糊查詢 like “匹配模式字符串”測試一個列值是否匹配給出的模式 特殊含義的通配字符:   %:表示0個或者任意多個字符   _:只表示一個任意字符 例1:找出名字以大寫字母B開頭的球員 mysql> select * from players where name like ‘B%’; 例2:得到名字以小寫字母r結尾的球員 mysql> select * from players where name like ‘%r’; 例3:得到名字的第二個字母為e的球員的名字和編號 mysql> select name,playerno from players where name like ‘_e%’; 例4:找出名字中包含一個下划線的球員 mysql> select playerno,name from players where name like ‘%/_%’ escape ‘/’; 注意:如果轉義字符指定反斜杠\,必須是escape ‘\\’(反斜杠\在進行模式匹配時,會被剝離一次) 例如:
mysql> select * from table_name where col_name like ‘%\\\%’ escape ‘\\’;
##反斜杠會被語法分析程序剝離一次,在進行模式匹配時,又會被剝離一次,最后會剩下一個反斜杠接受匹配.
7、regexp操作符(regular expression)
  --比like功能更加強大---正則
例1:得到名字以ba開頭的球員信息 mysql> select * from players where name regexp '^ba'; 
例2:得到名字包含了字母a、b或c的球員信息 mysql
> select * from players where name regexp '[abc]';
例3:對於名字中有字母m、e、n中的一個,並且連續出現2次的球員信息 mysql
> select * from players where name regexp '[men][men]';
 
        

三、邏輯操作符
  ---邏輯運算符又稱為布爾運算符,用來確認表達式的真和假
  如果在where中同時用到了and 和or運算符,先算and后算or,因為and優先級高;
  可以使用小圓括號來改變運算的順序。
例1: 得到那些住在Stratford或者出生於1963年的球員的編號、姓名、出生日期,但是不包括那些住在Stratford並且出生於1963年的球員 mysql> select playerno,name,birth_date from players where (town='Stratford' or year(birth_date)='1963') and not (town='Stratford' or year(birth_date)='1963'); 例2:得到那些住在Stratford或者出生於1963年的球員的編號、姓名、出生日期,但是不包括那些住在Stratford並且出生於1963年的球員 mysql> select playerno,name,birth_date from players where (town='Stratford') xor (year(birth_date)='1963');


四、位運算符
    ---位運算是將給定的操作數轉化為二進制后, 對各個操作數每一位都進行指定的邏輯運算,得到的二進制結果轉換為十進制數后就是位運算的結果 
mysql> SELECT 29 & 15; +---------+
| 29 & 15 |
+---------+
|      13 |
+---------+
1 row in set (0.01 sec) mysql> SELECT 1 << 2; +--------+
| 1 << 2 |
+--------+
|      4 |
+--------+
1 row in set (0.00 sec)
位運算符其實也就是位函數,通過mysql> ? Bit Functions了解使用,用得不多,但是要有個印象,要用的時候查看幫助


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM