【SQL server速成之路】函数

(3)LEFT函数


LEFT ( character_expression , integer_expression ) 



功能:返回从字符串character_expression左边开始,由integer_expression指定个数的字符。参数character_expression:为字符型表达式,integer_expression:为整型表达式,返回值为varchar型。

【例】 返回书名最左边的 10 个字符。


SELECT LEFT(书名, 10) 

	FROM book

	ORDER BY ISBN

GO



(4)LTRIM函数


LTRIM ( character_expression )



功能:删除character_expression字符串中的前导空格,并返回字符串。参数character_expression为字符型表达式,返回值类型为varchar。

【例】 使用 LTRIM 字符删除字符变量中的起始空格。


DECLARE @string varchar(40)

SET @string = '    中国,一个古老而伟大的国家'

SELECT  LTRIM(@string)



(5)REPLACE函数


REPLACE (string_expression1,string_expression2,string_expression3)



功能:用第三个字符串表达式替换第一个字符串表达式中包含的第二个字符串表达式,并返回替换后的表达式。

【例】 用 REPLACE实现字符串的替换。


DECLARE @str1 char(20),@str2 char(4),@str3 char(20)

SET @str1='数据库原理'

SET @str2='原理'

SET @str3='概论'

SET @str3=REPLACE (@str1, @str2, @str3)

SELECT @str3



(6)SUBSTRING函数

语法格式:


SUBSTRING ( expression , start , length ) 



功能:返回expression中指定的部分数据。参数expression可为字符串、二进制串、text、image字段或表达式;Start、Length均为整型,前者指定子串的开始位置,后者指定子串的长度(要返回的字节数)。如果 expression 是字符类型和二进制类型,则返回值类型与expression的类型相同,在其它情况下,参考下表。

在这里插入图片描述

【例】 如下程序在一列中返回xs表中的姓氏,在另一列中返回表中学生的名。


SELECT SUBSTRING(姓名, 1,1), SUBSTRING(姓名, 2, LEN(姓名)-1)

	FROM xs

	ORDER BY 姓名



(7)STR函数

语法格式:


STR ( float_expression [ , length [ , decimal ] ] ) 



功能:将数字数据转换为字符数据。参数float_expression为float类型的表达式,Length用于指定总长度,包括小数点,Decimal指定小数点右边的位数,Length、Decimal必须均为正整型。返回值类型为char。

【例】 如下程序用于查询ISBN号978-7-111-21382-6书籍的书名和库存量。


DECLARE @str char(80)

SET @str=(SELECT 书名 FROM book WHERE ISBN='978-7-111-21382-6 ') + 

	'库存量' + STR((SELECT 库存量 FROM book WHERE ISBN='978-7-111-21382-6 '))

SELECT @str



3.系统函数


系统函数用于对SQL Server中的值、对象和设置进行操作并返回有关信息。

(1)CASE函数

CASE有两种使用形式:一种是简单的CASE函数,另一种是搜索型的CASE函数。

① 简单的 CASE 函数。语法格式:


CASE input_expression                 

	WHEN when_expression THEN result_expression […n ]

[ ELSE else_result_expression  ]

END



功能:计算input_expression表达式之值,并与每一个when_expression表达式的值比较,若相等,则返回对应的result_expression表达式之值;否则返回else_result_expression表达式的值。

② 搜索型的CASE 函数。语法格式:


CASE

	WHEN Boolean_expression THEN result_expression […n ]

	[ ELSE else_result_expression]

END



功能:按指定顺序为每个 WHEN 子句的 Boolean_expression 表达式求值,返回第一个取值为 TRUE 的 Boolean_expression 表达式对应的 result_expression表达式之值;如果没有取值为TRUE的Boolean_expression表达式,则当指定 ELSE 子句时,返回 else_result_expression 之值;若没有指定 ELSE 子句,则返回 NULL。

【例】 使用CASE函数对读者按性别分类。


/*使用带有简单 CASE 函数的 SELECT 语句*/

SELECT 借书证号,sex= 

 		CASE 性别

			WHEN 0 THEN '男生'

			WHEN 1 THEN '女生'

 		END

	FROM xs



使用第二种格式的CASE语句则可以使用以下T-SQL语句:


SELECT 借书证号, 姓名, 专业, SEX= 

	 		CASE 

				WHEN 性别=1 THEN '男'

				WHEN 性别=0 THEN '女'

				ELSE  '无'

			END

	FROM xs



(2)CAST 和 CONVERT函数

常用的类型转换有如下几种:

① 日期型→字符型。

② 字符型→日期型。

③ 数值型→字符型。

语法格式:


CAST ( expression AS data_type ) 

CONVERT (data_type[(length)], expression)



功能:将expression表达式的类型转换为data_type所指定的类型。

【例】 如下程序将检索库存量为3~10的ISBN、书名,并将库存量转换为char(20)。


/*如下例子同时使用 CAST 和 CONVERT*/

-- 使用CAST实现.

SELECT ISBN,书名,库存量

	FROM book

	WHERE CAST(库存量 AS char(20)) LIKE '__' and 库存量>=3 and 库存量<10

GO

-- 使用 CONVERT实现.

SELECT ISBN,书名,库存量

	FROM book

	WHERE CONVERT(char(20),库存量) LIKE '__'  and 库存量>=3 and 库存量<10

GO



(3)COALESCE函数


COALESCE ( expression [ ,…n ] ) 



功能:返回参数表中第一个非空表达式的值,如果所有表达式均为 NULL,则 COALESCE 返回 NULL 值。

COALESCE(expression1,...n) 与如下形式的CASE 函数等价:


CASE

   	WHEN (expression1 IS NOT NULL) THEN expression1

   	...

   	WHEN (expressionN IS NOT NULL) THEN expressionN

	ELSE NULL



(4)ISNUMBRIC函数。

ISNUMBRIC函数用于判断一个表达式是否为数值类型。


ISNUMBRIC(expression)



如果输入表达式的计算值为有效的整数、浮点数、money或decimal类型时,ISNUMERIC返回1;否则返回 0。

4.日期时间函数


日期函数可用在 SELECT 语句的选择列表或用在查询的 WHERE 子句中。

(1)GETDATE函数


GETDATE ( )



功能:按SQL Server标准内部格式返回当前系统日期和时间。返回值类型:datetime。

(2)DATEPAR函数


DATEPART(datepart,date)



功能:按datepart指定格式返回日期,返回值类型为int。datepart的取值可为非缩写形式或缩写形式。参数date的类型应为datetime或smalldatetime。

(3)DATEDIFF函数


DATEDIFF(datepart,startdate,enddate)



功能:按datepart指定的内容,返回startdate,enddate两个指定的日期时间之间的间隔,间隔可以以年、季度、月、周、天数或小时等为单位,这取决于datepart的取值。

参数类型与取值:datepart的取值范围如下表所示。

在这里插入图片描述

【例】 编写程序根据读者的出生时间,计算其年龄。


USE xsbook

SET NOCOUNT ON

DECLARE @startdate datetime

SET @startdate = getdate()

SELECT DATEDIFF(yy,出生时间,@startdate )  AS 年龄

	FROM xs



(4)YEAR、MONTH、DAY函数

这三个函数分别返回指定日期的年、月、天部分,返回值都为整数。语法格式:


YEAR(date)

MONTH(date)

DAY(date)



5.游标函数


游标函数用于返回游标的有关信息。主要有如下游标函数:

(1)@@CURSOR_ROWS

语法格式:


@@CURSOR_ROWS



功能:返回最后打开的游标中当前存在的满足条件的行数。

(2)CURSOR_STATUS

语法格式:


CURSOR_STATUS

(	 { 'local' , 'cursor_name' }  		/*指明数据源为本地游标*/

	| { 'global' , 'cursor_name' }  	     	/*指明数据源为全局游标*/

	| { 'variable' , cursor_variable }		/*指明数据源为游标变量*/

) 



功能:返回游标状态是打开还是关闭。CURSOR_STATUS函数返回值如下表所示。

在这里插入图片描述

(3)@@FETCH_STATUS

语法格式:


@@FETCH_STATUS



功能:返回== FETCH 语句执行后游标的状态==。返回值类型为integer。@@FETCH_STATUS返回值如表下所示。

在这里插入图片描述

🎆用户函数的定义与调用

===========================================================================

根据用户定义函数返回值的类型,可将用户定义函数分为如下两个类别:

(1)标量函数:用户定义函数返回值为标量值,这样的函数称为标量函数。

(2)表值函数:返回值为整个表的用户定义函数为表值函数。根据函数主体的定义方式,表值函数又可分为内嵌表值函数或多语句表值函数。

1.标量函数


(1)标量函数的定义。

语法格式:


CREATE FUNCTION [ <数据库架构名>. ] <函数名> 		/*函数名部分*/

( [ { @<形参名> [ AS ][ type_schema_name.]<数据类型> 		/*形参定义部分*/

  [ = default ] [ READONLY ] } [ ,...n ] ])					

RETURNS <返回类型>					/*返回参数的类型*/

  [ WITH <function_option> [ ,...n ] ]			                 /*函数选项定义*/

  [ AS ]

  BEGIN 

        function_body 					/*函数体部分*/

    RETURN scalar_expression				/*返回语句*/

  END

[ ; ]



其中:


<function_option>::= 

{

   [ ENCRYPTION ]

  | [ SCHEMABINDING ]

  | [ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]

}



说明:

(1)<函数名>:函数名必须符合标识符的规则,对其架构来说该名在数据库中必须是唯一的。

(2)<形参名>:CREATE FUNCTION语句中可以声明一个或多个参数,用@符号作为第一个字符来指定形参名,每个函数的参数局部于该函数。

(3)<数据类型>:参数的数据类型可为系统支持的基本标量类型,不能为timestamp类型、用户定义数据类型、非标量类型(如cursor和table)。

(4)<返回类型>:函数使用RETURNS语句指定用户定义函数的返回值类型。

(5)function_body:由T-SQL语句序列构成的函数体。

(6)<function_option>:标量函数的选项。

从上述语法形式,归纳出标量函数的一般定义形式如下:


CREATE FUNCTION [所有者名.] 函数名

( 参数1 [AS] 类型1 [ = 默认值 ] ) [ ,...参数n [AS] 类型n [ = 默认值 ] ] ] ) 

RETURNS 返回值类型

[ WITH 选项 ] 

[ AS ]

BEGIN

	函数体

	RETURN 标量表达式

END



【例】 定义一个函数,按性别计算当前所有读者的平均年龄。

① 为了计算平均年龄,创建如下视图:


USE xsbook

GO

IF EXISTS(SELECT name FROM sysobjects WHERE name='VIEW_AGE' AND type='v')

	DROP VIEW VIEW_AGE

GO

CREATE VIEW VIEW_AGE

	AS SELECT 借书证号,性别,datepart(yyyy,GETDATE ( ))-datepart(yyyy,出生时间) as 年龄

		FROM xs

GO



② 创建函数aver_age,用于按性别计算当前读者的平均年龄。


/*检查该函数aver_age是否已定义,若已定义,则删除之*/

IF EXISTS(SELECT name FROM sysobjects WHERE name='aver_age' AND type='FN')

	DROP FUNCTION aver_age

GO

CREATE FUNCTION aver_age(@sex bit) RETURNS int

	AS

	BEGIN

		DECLARE @aver int

		SELECT @aver=

			( SELECT avg(年龄) 

				FROM VIEW_AGE 

				WHERE 性别=@SEX

			)

		RETURN @aver

	END

GO



(2)标量函数的调用

可按以下方式调用标量函数:

① 在SELECT语句中调用。调用形式:


架构名.函数名(实参1,…,实参n)



React

  • 介绍一下react

  • React单项数据流

  • react生命周期函数和react组件的生命周期

  • react和Vue的原理,区别,亮点,作用

  • reactJs的组件交流

  • 有了解过react的虚拟DOM吗,虚拟DOM是怎么对比的呢

  • 项目里用到了react,为什么要选择react,react有哪些好处

  • 怎么获取真正的dom

  • 选择react的原因

  • react的生命周期函数

  • setState之后的流程

  • react高阶组件知道吗?

  • React的jsx,函数式编程

  • react的组件是通过什么去判断是否刷新的

  • 如何配置React-Router

  • 路由的动态加载模块

  • Redux中间件是什么东西,接受几个参数

  • redux请求中间件如何处理并发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/722778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

生成对抗网络——GAN深度卷积实现(代码+理解)

本篇博客为 上篇博客的 另一个实现版本&#xff0c;训练流程相同&#xff0c;所以只实现代码&#xff0c;感兴趣可以跳转看一下。 生成对抗网络—GAN&#xff08;代码理解&#xff09; http://t.csdnimg.cn/HDfLOhttp://t.csdnimg.cn/HDfLO 目录 一、GAN深度卷积实现 1. 模型…

SSM整合-前后端分离(实现增删改查)

实现增删改查 实现功能03-添加家居信息需求分析/图解思路分析代码实现注意事项和细节 实现功能04-显示家居信息需求分析/图解思路分析代码实现 实现功能05-修改家居信息需求分析/图解思路分析代码实现注意事项和细节 实现功能06-删除家居信息需求分析/图解思路分析代码实现课后…

STM32学习笔记(八)--DMA直接存储器存取详解

&#xff08;1&#xff09;配置步骤1.配置RCC外设时钟 开启DMA外设2.初始化DMA外设 调用DMA_Init 外设存储器站点的起始地址 数据宽度 地址是否自增 方向 传输计数器 是否需要自动重装 选择触发源 通道优先级3.开启DMA控制 4.开启触发信号输出&#xff08;如果需要硬件触发&…

Termius for Mac/Win:跨平台多协议远程管理利器

Termius for Mac/Win是一款备受瞩目的跨平台多协议远程管理软件&#xff0c;以其卓越的性能、丰富的功能和便捷的操作体验&#xff0c;赢得了广大用户的青睐。无论是在企业IT管理、系统维护&#xff0c;还是个人远程连接、文件传输等方面&#xff0c;Termius都展现出了出色的实…

Python神经影像数据的处理和分析库之nipy使用详解

概要 神经影像学(Neuroimaging)是神经科学中一个重要的分支,主要研究通过影像技术获取和分析大脑结构和功能的信息。nipy(Neuroimaging in Python)是一个强大的 Python 库,专门用于神经影像数据的处理和分析。nipy 提供了一系列工具和方法,帮助研究人员高效地处理神经影…

C语言---自定义类型:结构体

结构体回顾 结构体 自定义的类型&#xff1a;结构体、联合体、枚举 结构是一些值的集合&#xff0c;这些值成为成员变量&#xff0c;结构的每个成员可以是不同类型的变量 //描述一本书&#xff1a;书名、作者、定价、书号//结构体类型---类似于整型、浮点型 struct Book {c…

照度计仪器校准检测需要注意哪些因素?通常选择什么校准机构?

照度计是计量中光学领域常见的一类计量器具&#xff0c;一般是用于测量光照影响的微量变化&#xff0c;在实验室和机构中&#xff0c;都有广泛运用。常规的照度计在仪器校准检测中&#xff0c;误差主要因素是外界光线干扰&#xff0c;以及温湿度变化和稳压直流电源的电压变化差…

FPGA早鸟课程第二弹 | Vivado 设计静态时序分析和实际约束

在FPGA设计领域&#xff0c;时序约束和静态时序分析是提升系统性能和稳定性的关键。社区推出的「Vivado 设计静态时序分析和实际约束」课程&#xff0c;旨在帮助工程师们掌握先进的设计技术&#xff0c;优化设计流程&#xff0c;提高开发效率。 课程介绍 关于课程 权威认证&…

MyBatis系列四: 动态SQL

动态SQL语句-更复杂的查询业务需求 官方文档基本介绍案例演示if标签应用实例where标签应用实例choose/when/otherwise应用实例foreach标签应用实例trim标签应用实例[使用较少]set标签应用实例[重点]课后练习 上一讲, 我们学习的是 MyBatis系列三: 原生的API与配置文件详解 现在…

据APO Research(阿谱尔)统计,2023年全球乳酸企业产能约119.3万吨

乳酸又称 2-羟基丙酸&#xff0c;一种天然有机酸&#xff0c;分子式是 C3H6O3。是自然界中最为广泛存在的羟基酸&#xff0c;于 1780 年被瑞典科学家 Scheele 首次发现。乳酸是自然界最小的手性分子&#xff0c;以两种立体异构体的形式存在于自然界中&#xff0c;即左旋型 L-乳…

定制化物联网设备:开启智能生活新篇章

随着科技的进步&#xff0c;物联网&#xff08;IoT&#xff09;已成为我们日常生活和工作中不可或缺的一部分。从智能家居到工业自动化&#xff0c;物联网设备以其独特的功能和特性&#xff0c;极大地提高了我们的生活质量和工作效率。然而&#xff0c;在众多的物联网设备中&am…

思科配置路由器,四台主机互相ping通

一、如图配置 PC4和PC5用来配置路由器&#xff0c;各ip、接口如图所示。 二、配置各主机ip、子网掩码SNM、默认网关DGW (一)、PC0 (二)、PC1 (三)、PC2 (四)、PC3 三、 配置路由器Router0 (期间报错是打错了字母) Router>en Router#configure terminal Enter configurat…

使用 Vue CLI 脚手架生成 Vue 项目

最近我参与了一个前端Vue2的项目。尽管之前也有过参与Vue2项目的经验&#xff0c;但对一些前端Web技术并不十分熟悉。这次在项目中遇到了很多问题&#xff0c;所以我决定借此机会深入学习Vue相关的技术栈。然而&#xff0c;直接开始深入钻研这些技术可能会显得枯燥&#xff0c;…

[图解]建模相关的基础知识-12

1 00:00:00,650 --> 00:00:06,200 我们看&#xff0c;下面这个&#xff0c;你看f里面定义域是编号 2 00:00:06,410 --> 00:00:09,040 值域是工号&#xff0c;各只有一个元素 3 00:00:11,850 --> 00:00:14,340 所以这些就没有了 4 00:00:14,610 --> 00:00:19,640…

vue+echarts实现tooltip轮播

效果图如下&#xff1a; 实现步骤如下&#xff1a; 定义一个定时器 timer:null, len: 0,页面一加载就清空定时器&#xff0c;此操作是为了防止重复加载时会设置多个定时器在setOption后设置定时器 this.myChart.clear() this.myChart.setOption(option); this.autoShowTool…

vue.js有哪几种甘特图库?Vue.js的5大甘特图库分享!

vue.js有哪几种甘特图库?Vue.js的5大甘特图库分享&#xff01; 如今&#xff0c;软件市场为任何复杂程度的项目提供了各种现成的计划和调度工具&#xff0c;但这些解决方案可能包含过多的功能或缺乏一些必要的功能。这就是为什么许多公司更愿意投资开发基于网络的定制解决方案…

【C++】拷贝构造函数、拷贝赋值函数与析构函数

C中的拷贝构造函数、拷贝赋值函数与析构函数详解 一、拷贝构造函数&#xff08;Copy Constructor&#xff09;二、拷贝赋值函数&#xff08;Copy Assignment Operator&#xff09;三、析构函数&#xff08;Destructor&#xff09;四、总结 在C中&#xff0c;拷贝构造函数、拷贝…

Docker私有化仓库Harbor安装流程

1.搭建Docker私有仓库主要有以下几种方式 使用Docker官方提供的Registry镜像&#xff1a;Docker官方提供了一个用于构建私有镜像仓库的Registry镜像&#xff0c;只需将镜像下载并运行容器&#xff0c;然后暴露5000端口即可使用。可以通过修改Docker的配置文件daemon.json&#…

具备人工智能标记的书签应用Hoarder

什么是 Hoarder &#xff1f; Hoarder 是一款可自托管的书签应用程序&#xff08;链接、笔记和图像&#xff09;&#xff0c;具有基于人工智能的自动标记和全文搜索功能。适合数据囤积者使用。 软件特点&#xff1a; &#x1f517; 为链接添加书签、做简单的笔记并存储图像。⬇…

简单介绍vim

文章目录 前言一、Vim的特点二、安装Vim三、设置Vim配置文件的位置&#xff1a;编辑配置文件&#xff1a;添加配置选项&#xff1a;保存并退出编辑器&#xff1a;快速配置验证设置&#xff1a; 总结 前言 Vim是一款强大的文本编辑器&#xff0c;被广泛用于各种编程和文本编辑任…