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()