程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

運算符,

編輯:MySQL綜合教程

運算符,


原文鏈接地址:http://www.cnblogs.com/lyhabc/p/3699969.html

MYSQL中的運算符很多,這一節主要講MYSQL中有的,而SQLSERVER沒有的運算符


安全等於運算符(<=>)

這個操作符和=操作符執行相同的比較操作,不過<=>可以用來判斷NULL值。

在兩個操作數均為NULL時,其返回值為1而不為NULL;

而當一個操作數為NULL時,其返回值為0而不為NULL。

下面分別是 

SELECT NULL <=>1 SELECT 1<=>0 SELECT NULL <=>NULL
的執行結果

在兩個操作數均為NULL時,其返回值為1而不為NULL;


LEAST運算符

語法格式為:LEAST(值1,值2,...值n),其中值n表示參數列表中有n個值。在有兩個或多個參數的情況下,返回最小值。

假如任意一個自變量為NULL,則LEAST()的返回值為NULL

使用LEAST運算符進行大小判斷,SQL語句如下:

SELECT LEAST(2,0),LEAST('a','b','c'),LEAST(10,NULL)

由結果可以看到,當參數中是整數或者浮點數時,LEAST將返回其中最小的值;

當參數為字符串時,返回字母中順序最靠前的字符;

當比較值列表中有NULL時,不能判斷大小,返回值為NULL


GREATEST運算符

語法格式為: GREATEST(值1,值2,...值n),其中n表示參數列表中有n個值。

在有兩個或多個參數的情況下,返回最大值。

假如任意一個自變量為NULL,則GREATEST()的返回值為NULL

使用GREATEST運算符進行大小判斷,SQL語句如下:

SELECT GREATEST(2,0),GREATEST('a','b','c'),GREATEST(10,NULL)

由結果可以看到,當參數中是整數或者浮點數時,GREATEST將返回其中最大的值;

當參數為字符串時,返回字母中順序最靠後的字符;

當比較值列表中有NULL時,不能判斷大小,返回值為NULL


REGEXP 運算符

在SQLSERVER裡是沒有正則函數或者運算符的,MYSQL在這方面的確比較完善

用來匹配字符串,語法格式為:expr REGEXP  匹配條件,如果expr滿足匹配條件,返回1;

如果不滿足,則返回0;

若expr或匹配條件任意一個為NULL,則結果為NULL

常用的幾種通配符:

(1)'^'匹配以該字符後面的字符開頭的字符串

(2)'$'匹配以該字符後面的字符結尾的字符串

(3)'.'匹配任何一個單字符

(4)'[...]'匹配在方括號內的任何字符。例如,“[abc]" 匹配a、b或c。

字符的范圍可以使用一個'-',“[a-z]”匹配任何字母,而“[0-9]”匹配任何數字

(5)'*' 匹配零個或多個在他前面的字符。例如,“x*”匹配任何數量的'*'字符,“[0-9]*”匹配任何數量的數字,

而“.*”匹配任何數量的任何字符。

使用REGEXP  運算符進行字符串匹配運算,SQL語句如下:

SELECT 'ssky' REGEXP '^s','ssky' REGEXP 'y$' ,'ssky' REGEXP '.sky','ssky' REGEXP '[ab]';

由結果可以看到,指定匹配字符串為ssky。

'^s'表示匹配任何以字母s開頭的字符串,因此滿足匹配條件,返回1;

'y$'表示匹配任何以字母y結尾的字符串,因此滿足匹配條件,返回1;

'.sky'表示匹配任何以sky結尾,字符長度為4的字符串,因此滿足匹配條件,返回1;

'^s'表示匹配任何以字母s開頭的字符串,因此滿足匹配條件,返回1;

'[ab]'表示匹配任何包含字母a或者b的字符串,指定字符串中沒有字母a也沒有字母b,因此不滿足匹配條件,返回0;

TIPS:正則表達式是一個可以進行復雜查詢的強大工具,相對於LIKE字符串匹配,他可以使用更多的通配符類型

查詢結果更加靈活。


邏輯運算符

邏輯與運算符:AND或者&&

邏輯或運算符:OR或者||

上面兩個運算符就不說了

在SQLSERVER裡,與運算符是AND或者& ;或運算符是OR或者|

http://sqlfool.com/2009/02/bitwise-operations/

--DROP TABLE myTable
CREATE Table myTable
(
      id            int identity(1,1)
    , item          varchar(10)
    , attributes    int
);
 
Insert Into myTable
Select 'Broccoli', 200 Union All
Select 'Tomato', 193 Union All
Select 'Car', 276 Union All
Select 'Ball', 292;

DECLARE @statusLookup Table
(
      attribute int
    , value     varchar(10)
);
 
Insert Into @statusLookup
Select 1, 'Red' Union All
Select 4, 'Blue' Union All
Select 8, 'Green' Union All
Select 16, 'Metal' Union All
 
Select 32, 'Plastic' Union All
Select 64, 'Plant' Union All
Select 128, 'Edible' Union All
Select 256, 'Non-Edible';
 
Select a.item, b.value
From myTable a
Cross Join @statusLookup b
Where a.attributes & b.attribute <> 0
Order By a.item
    , b.value

異或運算符:XOR

當任意一個操作數為NULL時,返回值為NULL;對於非NULL的操作數,如果兩個操作數都是非0值或者都是0值,則返回結果為0;

如果一個為0值,另一個為非0值,返回結果為1

使用異或運算符XOR進行邏輯判斷,SQL語句如下

SELECT 1 XOR 1, 0 XOR 0,1 XOR 0,1 XOR NULL,1 XOR 1 XOR 1

由結果可以看到‘1 XOR 1’和‘0 XOR 0’中運算符兩邊的操作數都為非零值,或者都是零值,因此返回0;

'1 XOR 0'中兩邊的操作數,一個為0值,另一個為非0值,返回結果為1;

'1 XOR NULL'中有一個操作數為NULL,返回結果為NULL;

'1 XOR 1 XOR 1'中有多個操作數,運算符相同,因此運算符從左到右依次計算,'1 XOR 1'的結果為0,再與1進行異或運算,因此結果為1。

TIPS: a XOR b的計算等同於(a AND (NOT b))或者(NOT a AND ( b))


位運算符

由於比較少用到,這裡只做簡單介紹

位運算符是用來對二進制字節中的位進行測試、移位或者測試處理

MYSQL中提供的位運算有

按位或(|)

按位與(&)

按位異或(^)

按位左移(<<)

按位右移(>>)

按位取反(~):反轉所有比特

TIPS:可以使用BIN()=binary函數查看一個十進制數的二進制表示

例如20這個數字 SELECT BIN(20)

二進制表示為:10100

同樣 sqlserver也是有位運算符的,但是沒有mysql那麼多,如下

DECLARE @i BIT
SET @i=0
SELECT @i | 3 AS '按位或'
SELECT @i & 3 AS '按位與'
SELECT @i ^ 3 AS '按位異或'
SELECT ~@i AS '非'

SET @i=1
SELECT ~@i AS '非'


特別提示

某一些MYSQL中的特殊字符需要用轉義字符才能插入數據庫,否則產生意料之外的結果。

下面的特殊字符需要在輸入時加反斜線符號開頭

輸入單引號需要:\'

輸入雙引號需要:\''

輸入反斜槓:\\

輸入回車符:\r

輸入換行符:\n

輸入制表符:\tab

輸入退格符:\b

在插入這些特殊字符到數據庫之前一定要進行轉義處理

在SQLSERVER裡,這些特殊字符不是在前面加反斜槓\,而是加單引號'

例如插入一個單引號,加了反斜槓,插入成功

INSERT INTO table_1(NAME) VALUES('\'')

SELECT * FROM table_1


總結

這一節簡單介紹了MYSQL裡的一些運算符和特殊字符,並且比較了與SQLSERVER的區別

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved