sql位運算
『壹』 sql運算符解釋
&是按位與運算符,如:A&B
只有當A,B同時為真時,結果才為真,其他情況都為假。
|
是
按位或
運算符,如:A|B
只有當A,B同時為假的時候結果才為假,其他情況為真。
^是按位
異或
運算符,如:A^B
只有當A,B同時為真時候為真,其他情況都為假。
『貳』 通過SQL Server的位運算功能巧妙解決多選查詢方法
無論使用int還是varchar,對於Status的多選查詢都是不易應對的。舉例,常規思維下對CustomerStatus的Enum設置如下:
復制代碼
代碼如下:
[Serializable]
public
enum
CustomerStatus
{
New
=
0,
Active
=
1,
Overe
=
2,
Suspended
=
3,
Closing
=
4,
Closed
=
5
}
在資料庫中以int形式存儲了Status值。
如果我在頁面中想一次搜索狀態為Active,Overe和Suspended狀態的Customer,該怎麼辦?程序是不是得把這三個狀態值
拼成字元串傳遞給SQL去處理?雖然能實現,但是相當低效。
現在給出一個標准解決方案:
(1).
所有可能被用作搜索條件的枚舉都應按如下位運算方式定義。
復制代碼
代碼如下:
public
enum
CustomerStatus
{
New
=
1,
Active
=
1<<1,
Overe
=
1<<2,
Suspended
=
1<<3,
Closing
=
1<<4,
Closed
=
1<<5
}
(2).
在資料庫設計時,Status的欄位必須為int型。
這樣當我們做多選查詢時@Status的Value=
CustomerStatus.Active
|
CustomerStatus.
Overe|
CustomerStatus.
Suspended
(3).
查詢語句如下:
復制代碼
代碼如下:
Select
*
From
Customer
Where
[Status]
&
@Status
=
[Status]
如果@Status可為null時,
復制代碼
代碼如下:
Select
*
From
Customer
Where
(
@Status
is
null
Or
[Status]
&
@Status
=
[Status])
用這樣一條簡單的語句,就可以獲取到所有符合@Status要求的數據行。
『叄』 sql語句中 <>0什麼意思
就是不等於0,<>是關系抄運算符的一襲種,常用的關系運算符有:
<,小於,例如a<b
<=,小於等於,例如a<=b
>,大於,例如a>b
>=,大於等於,例如a>=b
==,等於,例如a==b
!=,不等於,例如a!=b
(3)sql位運算擴展閱讀:
運算符的優先順序從高到低排列:
1、括弧:( )
2、乘、除、求模運算符: * 、 / 、 %
3、加減運算符: + 、 -
4、比較運算符: = , > , < , >= , <= , <> , != , !> , !<
5、位運算符: ^ , & , |
6、邏輯運算符: NOT
7、邏輯運算符: AND
8、邏輯運算符: OR
『肆』 SQL里的&和^是什麼意思啊
&是位運算符號。
判斷已過期/未過期的訂單,使用(Status & 4) 是否等於零來判斷。
『伍』 sql中有沒有位運算的函數
有,也是使用& | ~ ^
例如123|82
這樣就會按位運算,然後返回的數是10進制的
『陸』 T-SQL中的位運算~10等於多少能不能詳細解答一下,謝謝
~ 是取反運算符, 所謂取反就是0變1,1變0。
10(D) = 0000 1010(B)
~10(D) = 1111 0101(B) = -11(D)
『柒』 求助關於SQL中的位運算問題
sql server中沒有bool類型,而是用bit類型來表示bool值,估計是為了節省存儲空間。
可是要想實現取反操作似乎就麻煩寫了,比如類似下面這樣的語句是不行的:update category set visible=not visible where id=1,因為visible是bit類型,而不是bool類型。
一個很有趣的問題發生了,我們發現在Sql Server中的bit類型的數據-1可以表示1,於是我們可以將上面的語句改成:
update category set visible=visible-1 where id=1
呵呵:當然也可以這樣寫了:update category set visible = 1-visible where id=1,這樣就沒有-1了,就只有0和1了。
『捌』 sql中的^是什麼意思
1.^位運算中是異或的意思,即
1^1=0,
0^1=1,
1^0=1,
0^0=0
2.在like表達式中^表示非得意思,如
select
name
from
tablename
where
name
like
'a[^1,2,3]c'
表示的是選取name欄位中name值不包含a1c,a2c,a3c的其他值
『玖』 sql 運算符
http://ke..com/view/425996.htm
個人覺得運算符並不多.網路下就知道啦
比較運算符
含義(示例)
=(等號) 等於 (A1=B1)
>(大於號) 大於 (A1>B1)
<(小於號) 小於 (A1<B1)
>=(大於等於號) 大於或等於 (A1>=B1)
<=(小於等於號) 小於或等於 (A1<=B1)
<>(不等號) 不相等 (A1<>B1)
下邊的連接不知道對你有沒有用去看看咯
http://wenku..com/view/aa243ff5f61fb7360b4c65e6.html
『拾』 SQL查詢中&&是什麼意思
在SQL中是允許位運算的。&是位運算的一種,做用和and相似,但是是位運算,對每一位進行計算的。
如:
0000 1010 & 0000 1001 = 0000 1000
即0xa & 0x9 = 0x8
這類似的計算均稱之為位運算。參與位運算的類型為整型。也就是說在SQL中bit,byte,smallint,int,long,及不帶算號的都是可以進行計算的。但是對於float,decimal等則不參與這種運算。
在SQL中是不存在&&運算的,只有&運算。