sql函數實例
❶ 請教sql自定義函數返回的例子
有記錄的話會輸出 學號,姓名,性別,課程名稱,成績,如果返回時空,在後台代碼做判斷吧
用的是mysql
delimiter
$$
create
function
name_of_function(kc
varchar(10))
//kc
課程名稱
return
char(8)
begin
//現在比如你傳的參數是會計
return
(
select
ST.學號,ST.姓名,ST.性別
,SC.課程名,SC.成績
from
st
ST
left
join
(select
S.學號,S.成績,C.課程名
from
s
S
left
join
c
C
on
S.課程號
=
C.課程號
and
C.課程名
=
'會計')
SC
on
st.學號
=
SC.學號
;
);
end$$
demiliter;
❷ sQL server 什麼是實例
實例在資料庫中,代表一些程序的集合。如Oracle中,實例就是一些能支撐資料庫運行的資料庫程序。
在面向對象程序設計中,「類」在實例化之後叫做一個「實例」。 「類」是靜態的,不佔進程內存,而「實例」擁有動態內存。
實例化是指在面向對象的編程中,把用類創建對象的過程稱為實例化。是將一個抽象的概念類,具體到該類實物的過程。實例化過程中一般由類名 對象名 = new 類名(參數1,參數2...參數n)構成。
(2)sql函數實例擴展閱讀
實例(instance)和對象(object)的區別
實例和對象基本上是同義詞,它們常常可以互換使用。對象代表了類的一個特定的實例。對象具有身份(identity)和屬性值(attribute values)2個特徵。實例是對象的具體表示,操作可以作用於實例,實例可以有狀態地存儲操作結果。實例被用來模擬現實世界中存在的、具體的或原型的東西。
對象就是類的實例,所有的對象都是實例,但並不是所有的實例都是對象。例如,一個關聯(UML關系中的一種)的實例不是一個對象,它只是一個實例、一個連接。我們常見的實例都是類的實例,此時二者沒有區別。除了類的實例外的實例都不是對象。
❸ mssql函數DATENAME使用示例講解(取得當前年月日/一年中第幾天SQL語句)
mssql函數DATENAME
復制代碼
代碼如下:
語法
DATENAME
(
datepart
,
date
)
參數
datepart
是返回的
date
的一部分。下表列出了所有有效的
datepart
參數。用戶定義的變數等效項是無效的。
date
是一個表達式,可以解析為
time、date、smalldatetime、datetime、datetime2
或
datetimeoffset
值。date
可以是表達式、列表達式、用戶定義的變數或字元串文字。
為避免不確定性,請使用四位數年份。有關兩位數年份的信息,請參閱
two
digit
year
cutoff
選項。
返回類型
nvarchar
返回值
每個
datepart
及其縮寫都返回相同的值。
返回值因使用
SET
LANGUAGE
和登錄的默認語言設置的語言環境的不同而異。如果
date
是某些格式的字元串文字,則返回值由
SET
DATEFORMAT
而定。當日期為日期或時間數據類型的列表達式時,SET
DATEFORMAT
不影響返回值。
如何取得當前日期,格式帶有短橫線,不帶橫線的,如何取得當前時間。
如何取得月份,季度,一年中第幾天。。。
復制代碼
代碼如下:
SELECT
CONVERT(varchar(10),
getdate(),
120)--當前年月日,Example:2013-11-19
SELECT
CONVERT(varchar(10),
getdate(),
112)--當前年月日,Example:20131119
SELECT
CONVERT(varchar(10),
getdate(),
108)--當前年月日,Example:20:28:36
SELECT
DATENAME
(day
,getdate())--當月幾號
SELECT
DATENAME
(month
,getdate())--月份
SELECT
DATENAME
(quarter
,getdate())--季度
SELECT
DATENAME
(dayofyear
,getdate())--一年中的第幾天
SELECT
DATENAME(week,GETDATE())--一年中第幾周
SELECT
DATENAME(weekday,GETDATE())--星期幾
SELECT
DATENAME(hour,GETDATE())--當前幾點,24小時制的
SELECT
DATENAME(minute,GETDATE())--取當前分鍾數
SELECT
DATENAME(second,GETDATE())--取當前秒數
SELECT
DATENAME(millisecond,GETDATE())--毫秒
❹ SQL的str函數用法,最好帶實例,
返回由數字數據轉換來的字元數據。
語法:STR ( float_expression [ , length [ , decimal ] ] )
float_expression
帶小數點的數字 ( float) 數據類型的表達式。
length
總長度。它包括小數點、符號、數字以及空格。
默認值為 10。如果數字長度沒有指定的長,則前面會填充空格
decimal
小數點右邊的小數位數。decimal 必須小於等於 16。
如果 decimal 大於 16,則將結果截斷為小數點右邊的 16 位。
會進行四捨五入。
比如 SELECT STR(123.45, 30, 1)
返回前面帶有25個空格 的 123.5
❺ 常用的sql函數
1.isnull()
空記錄操作
2.getdate()
獲取當前時間
3.convert()
類型轉換
4.dateadd()
日期增加
5.datediff()
日期差
6.substring()
取字元串
7.replace()
字元串替換
8.left(),right()
取左右子字元串
9.LTrim(),RTrim()
去字元串左右空格
10.STR(),int()
類型轉換
❻ Sql Server中Substring函數的用法實例解析
SQL
中的
substring
函數是用來抓出一個欄位
資料
中的其中一部分。這個函數的
名稱
在不同的
資料庫
中不完全一樣:
MySQL:
SUBSTR(
),
SUBSTRING(
)
Oracle:
SUBSTR(
)
SQL
Server:
SUBSTRING(
)
SQL
中的
substring
函數是用來截取一個欄位資料中的其中一部分。
例如,我們需要將
字元串
'abdcsef'中的『abd'給提取出來,則可用substring
來實現:
select
substring('abdcsef',1,3)
結果:
'abd'
括弧中數字『1'表示截取的起始位置是從該字元串第一個字元開始,『3'表示截取後得到的字元串
長度
為3個字元。
這是『substring'最基礎的
語法
,當然,我們的需求有時候會變得比較復雜,例如以下例子:
我們只想要得到'roomno'中的房間號,發現起始字元位置並不是固定的,而且,我們需要的房間號長度也不固定。
此時,我們可以運用『charindex'這個函數就可以輕松搞定,它是用來定位某個特定字元在該字元串中的位置,即該函數
得到的結果是一個用來表示某個特定字元位置的數字。執行如下代碼:
select
room_stand=substring(roomno,charindex('元',roomno)+1,charindex('室',roomno)-charindex('元',roomno)-1)
from
PROPERTY_room
where
roomno
like
'%
單元
%室%'
結果:
以上所述是小編給大家介紹的Sql
Server中Substring函數的
用法
實例
解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對
腳本之家
網站的支持!
❼ SQL的函數和過程正確的描述是
SQL允許定義函數、過程和方法。定義可通過SQL的有關過程的組件,也可以通過外部的程序設計語言,如Java,C或C++。SQL標准所定義的語法,與大多數資料庫實現的自身的非標准版本的語法不同。函數和過程允許「業務邏輯」作為存儲過程記錄在資料庫中,並在資料庫中執行。
業務邏輯能夠被寫成程序設計語言過程並完全存儲在資料庫之外,但把它們定義成資料庫中的存儲過程有幾個優點:
1 允許多個應用訪問這些過程。
2.允許當業務規則發生改變時進行單個點的改變,而不變改變應用系統的其他部分。
3.應用代碼可以調用存儲過程,而不是直接更新資料庫關系。
具體操作如下:
1. 聲明方式。
在begin……end之間的語句可以執行signal out_of_classrome_seats來引發異常。這個句柄說明如果條件發生,將會採取動作終止begin end中的語句。另一個可選的動作是continue,它繼續從引發異常的語句的下一條語句開始執行。
❽ SQL函數的函數介紹
Aggregate函數的操作面向一系列的值,並返回一個單一的值。
注釋:如果在 SELECT 語句的項目列表中的眾多其它表達式中使用 SELECT 語句,則這個 SELECT 必須使用 GROUP BY 語句! 函數 描述 AVG(column) 返回某列的平均值 COUNT(column) 返回某列的行數(不包括 NULL 值) COUNT(*) 返回被選行數 FIRST(column) 返回在指定的域中第一個記錄的值 LAST(column) 返回在指定的域中最後一個記錄的值 MAX(column) 返回某列的最高值 MIN(column) 返回某列的最低值 STDEV(column) 返回某列的標准偏差 STDEVP(column) 返回某列總體的標准偏差 SUM(column) 返回某列的總和 VAR(column) 返回某列非NULL值的方差 VARP(column) 返回某列所有非NULL值的總體方差 【示例】 Name Age Adams, John 38 Bush, George 33 Carter, Thomas 28 AVG 函數返回數值列的平均值。NULL 值不包括在計算中。
SELECT AVG(column_name) FROM table_name
我們擁有 Orders 表(示例1):
我們希望計算 OrderPrice 欄位的平均值。
我們使用如下 SQL 語句:
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders結果集類似這樣: OrderAverage 950 示例2
我們希望找到 OrderPrice 值高於 OrderPrice 平均值的客戶。
我們使用如下 SQL 語句:
SELECT Customer FROM OrdersWHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)結果集類似這樣: Customer Bush Carter Adams COUNT() 函數COUNT() 函數返回匹配指定條件的行數。 FORMAT 函數用於對欄位的顯示進行格式化。
SELECT FORMAT(column_name,format) FROM table_name 參數 描述 column_name 必需。要格式化的欄位。 format 必需。規定格式。 我們擁有下面這個 Procts 表: Prod_Id ProctName Unit UnitPrice 1 gold 1000 g 32.35 2 silver 1000 g 11.56 3 copper 1000 g 6.85 我們希望顯示每天日期所對應的名稱和價格(日期的顯示格式是 YYYY-MM-DD)。
我們使用如下 SQL 語句:
SELECT ProctName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDateFROM Procts結果集類似這樣: ProctName UnitPrice PerDate gold 32.35 12/29/2008 silver 11.56 12/29/2008 copper 6.85 12/29/2008 LAST() 函數返回指定的欄位中最後一個記錄的值。
提示:可使用 ORDER BY 語句對記錄進行排序。
SELECT LAST(column_name) FROM table_name
實例1 Orders 表:
我們希望查找 OrderPrice 列的最後一個值。
我們使用如下 SQL 語句:
SELECT LAST(OrderPrice) AS LastOrderPrice FROM Orders結果集類似這樣: LastOrderPrice 100 LCASE 函數把欄位的值轉換為小寫。
SELECT LCASE(column_name) FROM table_name
我們擁有下面這個 Persons 表: Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing 我們希望選取 LastName 和 FirstName 列的內容,然後把 LastName 列轉換為小寫。
我們使用如下 SQL 語句:
SELECT LCASE(LastName) as LastName,FirstName FROM Persons結果集類似這樣: LastName FirstName adams John bush George carter Thomas LEN 函數返迴文本欄位中值的長度。
SELECT LEN(column_name) FROM table_name
同上有 Persons 表:
我們希望取得 City 列中值的長度。
我們使用如下 SQL 語句:
SELECT LEN(City) as LengthOfCity FROM Persons結果集類似這樣: LengthOfCity 6 8 7 MAX 函數返回一列中的最大值。NULL 值不包括在計算中。
SELECT MAX(column_name) FROM table_name注釋:MIN 和 MAX 也可用於文本列,以獲得按字母順序排列的最高或最低值。
實例1Orders 表:
我們希望查找 OrderPrice 列的最大值。
我們使用如下 SQL 語句:
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders結果集類似這樣: LargestOrderPrice 2000 MID 函數用於從文本欄位中提取字元。
SELECT MID(column_name,start[,length]) FROM table_name 參數 描述 column_name 必需。要提取字元的欄位。 start 必需。規定開始位置(起始值是 1)。 length 可選。要返回的字元數。如果省略,則 MID() 函數返回剩餘文本。 同上有 Persons 表:
我們希望從 City 列中提取前 3 個字元。
我們使用如下 SQL 語句:
SELECT MID(City,1,3) as SmallCity FROM Persons結果集類似這樣: SmallCity Lon New Bei MIN 函數返回一列中的最小值。NULL 值不包括在計算中。
SELECT MIN(column_name) FROM table_name注釋:MIN 和 MAX 也可用於文本列,以獲得按字母順序排列的最高或最低值。
實例1 Orders 表:
我們希望查找 OrderPrice 列的最小值。
我們使用如下 SQL 語句:
SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders結果集類似這樣: SmallestOrderPrice 100 NOW 函數返回當前的日期和時間間
SELECT NOW() FROM table_name
貌似沒有這函數。
我們擁有下面這個 Procts 表: Prod_Id ProctName Unit UnitPrice 1 gold 1000 g 32.35 2 silver 1000 g 11.56 3 copper 1000 g 6.85 我們希望顯示當天的日期所對應的名稱和價格。
我們使用如下 SQL 語句:
SELECT ProctName, UnitPrice, Now() as PerDate FROM Procts結果集類似這樣: ProctName UnitPrice PerDate gold 32.35 12/29/2008 11:36:05 AM silver 11.56 12/29/2008 11:36:05 AM copper 6.85 12/29/2008 11:36:05 AM ROUND 函數用於把數值欄位舍入為指定的小數位數。
SELECT ROUND(column_name,decimals) FROM table_name 參數 描述 column_name 必需。要舍入的欄位。 decimals 必需。規定要返回的小數位數。 Procts 表:
我們希望把名稱和價格舍入為最接近的整數。
我們使用如下 SQL 語句:
SELECT ProctName, ROUND(UnitPrice,0) as UnitPrice FROM Procts結果集類似這樣: ProctName UnitPrice gold 32 silver 12 copper 7 SUM 函數返回數值列的總數(總額)。
SELECT SUM(column_name) FROM table_name
實例1 Orders 表:
我們希望查找 OrderPrice 欄位的總數。
我們使用如下 SQL 語句:
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders結果集類似這樣: OrderTotal 5700 GROUP BY 語句合計函數 (比如SUM) 常常需要添加 GROUP BY 語句。 UCASE 函數把欄位的值轉換為大寫。
SELECT UCASE(column_name) FROM table_name
Persons 表:
我們希望選取 LastName 和 FirstName 列的內容,然後把 LastName 列轉換為大寫。
我們使用如下 SQL 語句:
SELECT UCASE(LastName) : LastName FirstName ADAMS John BUSH George CARTER Thomas
❾ SQL函數題目
---創建資料庫
create database schoolBD
go
--創建學生表
use schoolBD
go
create table [student]
(
s_id int primary key,
s_name nvarchar(20)
)
GO
---創建科目表
create table subject
(
subject_id int primary key,
subject_name char(20)
)
GO
---創建成績表
create table score
(
score_id int primary key,
s_id int
constraint FK_subject_s_id Foreign key (s_id)
references student(s_id), ---引用學生表中的學生ID
subject_id int
constraint FK_subject_subject_id Foreign key (subject_id)
references subject(subject_id),---引用科目表中的科目ID
grade int
)
GO
---插入信息到學生表
insert student values (00001,'張三')
insert student values (00002,'李四')
insert student values (00003,'王五')
----插入到科目表
insert subject values (001,'c語言')
insert subject values (002,'sql語言')
insert subject values (003,'英語')
insert subject values (004,'計算機基礎')
insert subject values (005,'計算機網路')
---把張三的個門成績插入成績表
insert score values (01,00001,001,100)
insert score values (02,00001,002,80)
insert score values (03,00001,003,50)
insert score values (04,00001,004,90)
---把李四的個門成績插入成績表
insert score values (05,00002,001,98)
insert score values (06,00002,002,85)
insert score values (07,00002,003,70)
insert score values (08,00002,004,98)
insert score values (09,00002,005,78)
---把王五的個門成績插入成績表
insert score values (10,00003,001,59)
insert score values (11,00003,002,64)
insert score values (12,00003,003,98)
insert score values (13,00003,004,68)
insert score values (14,00003,005,31)
---姓名和平均分
select s_name as '姓名',avg(grade) as '平均成績'
from student as s1,subject as s2,score as s3
where s1.s_id=s3.s_id and s2.subject_id=s3.subject_id
group by s_name
----最高成績的科目名稱
select s2.subject_name as '最高成績的科目的名稱'
from student as s1,subject as s2,score as s3
where grade=(select max(grade) from score as s4 where s1.s_id=s4.s_id)
and s1.s_id=s3.s_id and s2.subject_id=s3.subject_id
----最低成績的科目名稱
select s2.subject_name as '最高成績的科目的名稱'
from student as s1,subject as s2,score as s3
where grade=(select max(grade) from score as s4 where s1.s_id=s4.s_id)
and s1.s_id=s3.s_id and s2.subject_id=s3.subject_id
union
---最高和最低成績
select max(grade) as '最高成績',min(grade) as '最低成績'
from student as s4,score as s5
where s4.s_id=s5.s_id group by s4.s_id
---編寫函數,可以傳入姓名,得到某個人的總成績。
create function func_SumGrade(@name nvarchar(20))
returns int
as
begin
declare @sumgrade int --返回的總成績
select @sumgrade=sum(grade)
from student as s1,subject as s2,score as s3
where s1.s_id=s3.s_id and s2.subject_id=s3.subject_id and s1.s_name=@name
if (@sumgrade is null)
set @sumgrade=0
return @sumgrade
end
---example
----編寫函數,可以傳入姓名,得到某個人最高成績的科目名稱
create function func_SumGrade_subject(@name nvarchar(20))
returns char(20) --返回姓名 此處不可以返回 如果 最高成績的科目 多於一門的情況
as
begin
declare @subjectname char(20)
select @subjectname=s2.subject_name
from student as s1,subject as s2,score as s3
where grade=(select max(grade) from score as s4 where s1.s_id=s4.s_id) and s1.s_name=@name
and s1.s_id=s3.s_id and s2.subject_id=s3.subject_id
if (@subjectname is null)
set @subjectname=''
return @subjectname
end
---example
---編寫函數,可以傳入科目名稱,得到當前科目最高成績的人的名稱和分數
create function func_tatalName_Grade(@subjectname char(20))
returns table
as
return(
select s1.s_name as '姓名',grade as '分數'
from student as s1,subject as s2,score as s3
where grade=(
select max(grade)
from student as s1,subject as s2,score as s3
where s1.s_id=s3.s_id and s2.subject_id=s3.subject_id and s2.subject_name='英語'
) and
s1.s_id=s3.s_id and s2.subject_id=s3.subject_id and s2.subject_name='英語'
)
---example
select * from func_tatalName_Grade('英語')
---編寫函數,傳入科目名稱,得到當前科目的平均成績和小於平均成績的人的名稱。
create function func_LowerAvgName(@subjectname char(20))
returns table
as
return(
select s_name,grade
from student as s1,subject as s2,score as s3
where grade<(select avg(grade) as pj ----子查詢得到此科目的平均成績
from student as s1,subject as s2,score as s3
where s1.s_id=s3.s_id and s2.subject_id=s3.subject_id and s2.subject_name=@subjectname)
and s1.s_id=s3.s_id and s2.subject_id=s3.subject_id and s2.subject_name=@subjectname
)
----example
select * from func_LowerAvgName('英語')
❿ SQL Server中的時間函數有那些,最好舉例說明
比較常用的時間函數有DateAdd,DateDiff,DateName,DatePart,Day,Getdate,Month,Year,GetUTCDate這幾個函數。
以下依次說明,如需更詳細說明請參考SQL幫助文檔:
1. DateAdd函數
在向指定日期加上一段時間的基礎上,返回新的 datetime 值。
語法
DATEADD ( datepart , number, date )
示例
此示例列印出 pubs 資料庫中標題的時間結構的列表。此時間結構表示當前發布日期加上 21 天。
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
2.DateDiff函數
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart , startdate , enddate )
示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
3.DateName函數
返回代表指定日期的指定日期部分的字元串。
語法
DATENAME ( datepart , date )
示例
此示例從 GETDATE 返回的日期中提取月份名。
SELECT DATENAME(month, getdate()) AS 'Month Name'
4.DatePart函數
返回代表指定日期的指定日期部分的整數。
語法
DATEPART ( datepart , date )
示例
此示例顯示 GETDATE 及 DATEPART 的輸出。
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
5.Day函數
返回代表指定日期的天的日期部分的整數。
語法
DAY ( date )
示例
此示例返回從日期 03/12/1998 後的天數。
SELECT DAY('03/12/1998') AS 'Day Number'
6.GetDate函數
按 datetime 值的 Microsoft® SQL Server™ 標准內部格式返回當前系統日期和時間。
語法
GETDATE ( )
示例
下面的示例得出當前系統日期和時間:
SELECT GETDATE()
7.Month函數
返回代表指定日期月份的整數。
語法
MONTH ( date )
示例
下面的示例從日期 03/12/1998 中返回月份數。
SELECT "Month Number" = MONTH('03/12/1998')
8.Year函數
返回表示指定日期中的年份的整數。
語法
YEAR ( date )
示例
下例從日期 03/12/1998 中返回年份數。
SELECT "Year Number" = YEAR('03/12/1998')
9.GetUTCDate函數
返回表示當前 UTC 時間(世界時間坐標或格林尼治標准時間)的 datetime 值。當前的 UTC 時間得自當前的本地時間和運行 SQL Server 的計算機操作系統中的時區設置。
語法
GETUTCDATE()
示例
下例從日期 03/12/1998 中返回年份數。
SELECT GETUTCDATE()