我最常用的乙個函式是find_in_set逗號分隔的list列表
一、數學函式
二、聚合函式(常用於group by從句的select查詢中)
三、字串函式
四、日期和時間函式
示例:select encrypt('root','salt');
select encode('xufeng','key');
select decode(encode('xufeng','key'),'key');#加解密放在一起
select aes_encrypt('root','key');
select aes_decrypt(aes_encrypt('root','key'),'key');
select md5('123456');
select sha('123456');
六、控制流函式
mysql有4個函式是用來進行條件操作的,這些函式可以實現sql的條件邏輯,允許開發者將一些應用程式業務邏輯轉換到資料庫後台。
mysql控制流函式:
case when[test1] then [result1]...else [default] end如果testn是真,則返回resultn,否則返回default
case [test] when[val1] then [result]...else [default]end 如果test和valn相等,則返回resultn,否則返回default
if(test,t,f) 如果test是真,返回t;否則返回f
ifnull(arg1,arg2) 如果arg1不是空,返回arg1,否則返回arg2
nullif(arg1,arg2) 如果arg1=arg2返回null;否則返回arg1
這些函式的第乙個是ifnull(),它有兩個引數,並且對第乙個引數進行判斷。如果第乙個引數不是null,函式就會向呼叫者返回第乙個引數;如果是null,將返回第二個引數。
如:select ifnull(1,2), ifnull(null,10),ifnull(4*null,'false');
nullif()函式將會檢驗提供的兩個引數是否相等,如果相等,則返回null,如果不相等,就返回第乙個引數。
如:select nullif(1,1),nullif('a','b'),nullif(2+3,4+1);
和許多指令碼語言提供的if()函式一樣,mysql的if()函式也可以建立乙個簡單的條件測試,這個函式有三個引數,第乙個是要被判斷的表示式,如果表示式為真,if()將會返回第二個引數,如果為假,if()將會返回第三個引數。
如:selectif(1<10,2,3),if(56>100,'true','false');
if()函式在只有兩種可能結果時才適合使用。然而,在現實世界中,我們可能發現在條件測試中會需要多個分支。在這種情況下,mysql提供了case函式,它和php及perl語言的switch-case條件例程一樣。
case函式的格式有些複雜,通常如下所示:
case [expression to be evaluated]
when [val 1] then [result 1]
when [val 2] then [result 2]
when [val 3] then [result 3]
......
when [val n] then [result n]
else [default result]
end這裡,第乙個引數是要被判斷的值或表示式,接下來的是一系列的when-then塊,每一塊的第乙個引數指定要比較的值,如果為真,就返回結果。所有的when-then塊將以else塊結束,當end結束了所有外部的case塊時,如果前面的每乙個塊都不匹配就會返回else塊指定的預設結果。如果沒有指定else塊,而且所有的when-then比較都不是真,mysql將會返回null。
case函式還有另外一種句法,有時使用起來非常方便,如下:
case
when [conditional test 1] then [result 1]
when [conditional test 2] then [result 2]
else [default result]
end這種條件下,返回的結果取決於相應的條件測試是否為真。
示例:mysql>select case 'green'
when 'red' then 'stop'
when 'green' then 'go' end;
select case 9 when 1 then 'a' when 2 then 'b' else 'n/a' end;
select case when (2+2)=4 then 'ok' when(2+2)<>4 then 'not ok' end asstatus;
select name,if((isactive = 1),'已啟用','未啟用') as result fromuserlogininfo;
select fname,lname,(math+sci+lit) as total,
case when (math+sci+lit) < 50 then 'd'
when (math+sci+lit) between 50 and 150 then 'c'
when (math+sci+lit) between 151 and 250 then 'b'
else 'a' end
as grade from marks;
select if(encrypt('sue','ts')=upass,'allow','deny') as loginresultfrom users where uname = 'sue';#乙個登陸驗證
七、格式化函式
其中最簡單的是format()函式,它可以把大的數值格式化為以逗號間隔的易讀的序列。
示例:select format(34234.34323432,3);
select date_format(now(),'%w,%d %m %y %r');
select date_format(now(),'%y-%m-%d');
select date_format(19990330,'%y-%m-%d');
select date_format(now(),'%h:%i %p');
select inet_aton('10.122.89.47');
select inet_ntoa(175790383);
八、型別轉化函式
為了進行資料型別轉化,mysql提供了cast()函式,它可以把乙個值轉化為指定的資料型別。型別有:binary,char,date,time,datetime,signed,unsigned
示例:select cast(now() as signed integer),curdate()+0;
select 'f'=binary 'f','f'=cast('f' as binary);
九、系統資訊函式
示例:select database(),version(),user();
selectbenchmark(9999999,log(rand()*pi()));#該例中,mysql計算log(rand()*pi())表示式9999999次。
第十六章 tcp wrappers
在伺服器向外提供的tcp服務上包裝一層安全檢測機制。外來連線請求首先通過這個安全檢測,獲得安全認證後才可被系統服務接受。hosts.allow hosts.deny 在配置檔案中為各服務分別定義訪問控制規則實現訪問控制,檔案中的規則是即時生效的。配置檔案語法 1 daemon list client...
第十六章 資料繫結(二)
雖然大多數資料繫結都是在xaml中定義的,但您應該知道如何在 中執行乙個。這是在 中設定資料繫結的一種方式 但不是唯一的方法 bindingcontext屬性由bindableobject定義。它是bindableobject定義的唯一屬性。setbinding方法也由bindableobject定...
第十六章 資料繫結(六)
binding類定義了乙個名為path的屬性,用於設定源屬性名稱。但為什麼它被稱為path?為什麼不叫財產?path屬性被稱為它所呼叫的屬性,因為它不需要是乙個屬性。它可以是一組屬性,子屬性,甚至是與句點相關聯的索引器。以這種方式使用path可能很棘手,所以這裡有乙個名為bindingpathdem...