sqlserver的函數
㈠ Mysql、SQLServer判斷字元串是否包含某字元
MySQL:
在MySQL中使用FIND_IN_SET( st , str )函數來判斷某個字元串是否包含某字元。其中,st表示需要判斷的字元,str表示相應的字元串欄位。如果包含,則返回st字元在字元串中的位置,以1為起點。如果不包含,則返回0;
SQLServer:
在SQLServer中使用CHARINDEX(','+ st +',' , ','+ str +',')函數來判斷某個字元串是否包含某字元。其中,st表示需要判斷的字元,str表示相應的字元串欄位。如果包含,則返回st字元在字元串中的位置,以1為起點。如果不包含,則返回0;
注意:在SQLServer函數中,st必須為字元串,使用int則無效,如果是數字類型字元,必須使用雙引號。
㈡ C#怎麼調用sqlserver的自定義函數
sql server 自定義函數的使用
自定義函數
用戶定義自定義函數像內置函數一樣返回標量值,也可以將結果集用表格變數返回
用戶自定義函數的類型:
標量函數:返回一個標量值
表格值函數{內聯表格值函數、多表格值函數}:返回行集(即返回多個值)
1、標量函數
Create function 函數名(參數)
Returns 返回值數據類型
[with {Encryption | Schemabinding }]
[as]
begin
SQL語句(必須有return 變數或值)
End
Schemabinding :將函數綁定到它引用的對象上(註:函數一旦綁定,則不能刪除、修改,除非刪除綁定)
Create function AvgResult(@scode varchar(10))
Returns real
As
Begin
Declare @avg real
Declare @code varchar(11)
Set @code=@scode + 『%』
Select @avg=avg(result) from LearnResult_jiali
Where scode like @code
Return @avg
End
執行用戶自定義函數
select 用戶名。函數名 as 欄位別名
select dbo.AvgResult(『s0002』) as result
用戶自定義函數返回值可放到局部變數中,用set ,select,exec賦值
declare @avg1 real ,@avg2 real ,@avg3 real
select @avg1= dbo.AvgResult(『s0002』)
set @avg2= dbo.AvgResult(『s0002』)
exec @avg3= dbo.AvgResult 『s0002』
select @avg1 as avg1 ,@avg2 as avg2 ,@avg3 as avg3
函數引用
create function code(@scode varchar(10))
returns varchar(10)
as
begin
declare @ccode varchar(10)
set @scode = @scode + 『%』
select @ccode=ccode from cmessage
where ccode like @scode
return @ccode
end
select name from class where ccode = dbo.code(『c001』)
2、表格值函數
a、 內聯表格值函數
格式:
create function 函數名(參數)
returns table
[with {Encryption | Schemabinding }]
as
return(一條SQL語句)
create function tabcmess(@code varchar(10))
returns table
as
return(select ccode,scode from cmessage where ccode like @ccode)
b、 多句表格值函數
create function 函數名(參數)
returns 表格變數名table (表格變數定義)
[with {Encryption | Schemabinding }]
as
begin
SQL語句
end
多句表格值函數包含多條SQL語句,至少有一條在表格變數中填上數據值
表格變數格式
returns @變數名 table (column 定義| 約束定義 [,…])
對表格變數中的行可執行select,insert,update,delete , 但select into 和 insert 語句的結果集是從存儲過程插入。
Create function tabcmessalot (@code varchar(10))
Returns @ctable table(code varchar(10) null,cname varchar(100) null)
As
Begin
Insert @ctable
Select ccode,explain from cmessage
Where scode like @code
return
End
Select * from tabcmessalot(『s0003』)
來自:http://hi..com/datachina/blog/item/801def0366c4e7ea09fa9344.htmlC#調用SQL自定義函數返回值
代碼
1 --SQL自定義函數:
2
3 CREATE FUNCTION [GetProjectID] (@headStr nvarchar(10),@date datetime)
4 )
5
6 RETURNS NVARCHAR(200)
7
8 AS
9
10 BEGIN
11
12 --不能在自定義函數中用INSERT INTO
13
14 --insert into emos_cust(cust_name,dates)values(
15
16 --@headStr,@date
17
18 --)
19
20 return 'TEST BY HANSHU'
21 END
代碼
1 /// <summary>
2 /// 獲取項目文件編號 塗聚文
3 /// </summary>
4 private void FileNo()
5 {
6
7 SqlConnection conn = new SqlConnection(connectionString);
8 string strSql = "GetProjectID"; //自定SQL函數
9 SqlCommand cmd = new SqlCommand(strSql, conn);
10 cmd.CommandType = CommandType.StoredProcere;
11 cmd.Parameters.Add("@headStr", SqlDbType.NVarChar).Value = "ZQ3"; //輸入參數
12 cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = System.DateTime.Now.ToShortDateString(); //輸入參數
13 cmd.Parameters.Add("@returnString", SqlDbType.NVarChar);
14 cmd.Parameters["@returnString"].Direction = ParameterDirection.ReturnValue; //返回參數
15 try
16 {
17 conn.Open();
18 object o= cmd.ExecuteScalar();
19
20 this.txtAFileNO.Text = cmd.Parameters["@returnString"].Value.ToString();
21
22 //Response.Write("");
23
24 }
25 catch (Exception ex)
26 {
27
28 this.txtAFileNO.Text = ex.Message;
29
30 }
31 finally
32 {
33
34 if (!(conn.State == ConnectionState.Closed))
35 {
36
37 conn.Close();
38
39
40 }
41
42 }
43
44
45 }
㈢ sqlserver涓璫ount(),sum(),max()鍚勪唬琛ㄤ粈涔堟剰涔夛紵
count()鍑芥暟錛氱敤浜庤繑鍥炴弧瓚蟲潯浠剁殑璁板綍鏁幫紝鍙浠ョ粺璁℃煇涓鍒楁垨鑰呮墍鏈夊垪鐨勮板綍鏁般
sum()鍑芥暟錛氱敤浜庤繑鍥炴煇涓鍒楃殑鏁板間箣鍜岋紝鍙浠ュ規暣鏁般佸皬鏁版垨鑰呰揣甯佺被鍨嬬殑鏁版嵁榪涜屾眰鍜屻
max()鍑芥暟錛氱敤浜庤繑鍥炴煇涓鍒楃殑鏈澶у礆紝鍙浠ュ規暟瀛椼佹棩鏈熸垨鑰呭瓧絎︿覆綾誨瀷鐨勬暟鎹榪涜屾瘮杈冦
㈣ 如何在sqlserver 的函數或存儲過程中拋出異常。
try...catch
㈤ sqlserver截取日期的年份和月份
sqlserver 截取日期年份和月份使用datepart函數,函數使用方法如下:
一、函數功能:DATEPART() 函數用於返回日期/時間的單獨部分,比如年、月、日、小時、分鍾等等。
二、語法:DATEPART(datepart,date)
三、參數說明:date參數是合法的日期表達式。datepart參數可以是下列的值:
四、實例
1、截取年份:datepart(yy,'2017-1-1') 返回:2017
2、截取月份:datepart(mm,'2017-1-1') 返回:1
五、datepart函數返回的是整型數值,如果需要返回字元型,那麼使用datename()函數,用法與datepart相同,只是返回數據類型不同。
㈥ 07-SQLSERVER聚合函數
SQL SERVER中聚合函數主要有:
(1)求員工總人數
(2)求最大值,求最高工資
(3)求最小時,求最小工資
(4)求和,求所有員工的工資總和
(5)求平均值,求所有員工的平均工資
ROUND函數用法:
(6)求數量,最大值,最小值,總和,平均值,在一行顯示
(7)查詢出武漢地區的員工人數,總工資,最高工資,最低工資和平均工資
(8)求出工資比平均工資高的人員信息
(9)求數量,年齡最大值,年齡最小值,年齡總和,年齡平均值,在一行顯示
(10)計算出月薪在10000 以上的男性員工的最大年齡,最小年齡和平均年齡
(11)統計出所在地在「武漢或上海」的所有女員工數量以及最大年齡,最小年齡和平均年齡
(12)求出年齡比平均年齡高的人員信息
GETDATE() 返回當前的日期和時間
DATEPART() 返回日期/時間的單獨部分
DATEADD() 返回日期中添加或減去指定的時間間隔
DATEDIFF() 返回兩個日期直接的時間
DATENAME() 返回指定日期的指定日期部分的整數
CONVERT() 返回不同格式的時間
示例:
時間格式控制字元串:
㈦ SqlServer函數的類型轉換函數
convert (數據類型[(長度)],表達式[,樣式])
將一種數據類型的表達式顯式轉換為另一種數據類型的表達式;
長度:如果數據類型允許設置長度,可以設置長度,例如 varchar(10);
樣式:用於將日期類型數據轉換為字元數據類型的日期格式的樣式。
詳細可以參照安安DIY創作室的一篇文章:《sqlserver datetime轉換成帶格式的字元串》
cast (表達式 AS 數據類型[(長度)])
將一種數據類型的表達式顯式轉換為另一種數據類型的表達式。
例如:select cast(123 as nvarchar) 返回123
select N'年齡:' + cast(23 as nvarchar) 返回 年齡:23