教学思路SQL之入门习题《学生成绩》 六.使用SQL函数

简介:
   本节课我们来学习使用sql自带的系统函数,完成查询作业。sql系统函数中较常用的,包括字符串函数、日期函数、聚合函数以及其他函数框架下的数据类型转换、自增长函数、空值函数等。后面所指出的几种函数,我们都在前几节的学习中使用过,今天我们着重来学习前两种函数。
     字符串函数:
      1.charindex():
     返回字符串中指定表达式的起始位置,公式为:charindex(‘表达式’,字段名 [,起始位置]) 如 使用charindex(‘小’,name,3)将得到‘小’字在字段name值的第三个字符后中所找到的位置,当name字段的一条记录中没有小字,将返回0.
        下面针对此函数出一道之前题:
        查询出学生所在的地区是大连的学生信息:
        select * from student where charindex('大连',diqu)>0  
       (注意:使用>0将不包含大连的记录过滤掉)
         等同于:select * from student where diqu like'%大连%'
      2.left():
       公式left(字段名,截取长度)如left(name,4)将截取到name字段中每条记录从左起前4个字符。
        查询出所有学生信息的姓氏:
        select left(ltrim(name),1) from student
        (注意:应使用ltrim()函数除去name字段中所有左侧的空格)
      3.right():
      用法与left相同,right(name,1)将将截取到name字段中每条记录从右起第1字符。
      4.len():
      公式为len(字段名),如len(name),将得到每条记录name字段的值的字符长度,不包含尾随空格。
         查询出所有学生的名,即不显示姓氏。
         select right(rtrim(name),len(ltrim(name))-1) from student
         (注意使用rtrim()函数除去掉name的所有右侧空格,然后得到值的字符长度减一个即为要每条记录要截取的长度,这样能成功的得到姓氏是一个字但是名的字数不限制的结果集)
      5.lower():
        公式为lower(字段名),将得到把字段中所有字母都变为小写的结果集。
        查询出所有学生的姓名,如遇到姓名中包含大写的字母,用小写来代替。
        lower(name) from student
      6.upper():
       用法与lower()相同,将得到把字段中所有字母都变为大写的结果集。
      7.replace():
       用第三个表达式替换在第一个表达式中出现第二个表达式的结果集,如replace(name,‘小’,‘晓’),将name字段中所有的‘小’字替换为‘晓’。
       查询出所有学生信息,性别如是‘男’改为‘女’显示。
        select replace(sex,'男','女') from student
      8.patindex():
        公式patindex(值,字段A)返回指定值在字段A中第一次出现的起始位置。
        查询出所有学生姓名中带小字的学生信息
        select *  from student where patindex('%小%',name)>0
        等同于:select * from student where name like'%小%'
      9.reverse():
       公式reverse(字段名),将字段中的值全部翻转。
      10.substring():
        公式substring(字段A,截取的开始位,截取的长度).
         查询出所有的学生的姓氏
        select substring(ltrim(name),1,1) from student
日期函数
      允许数据类型: timeinterval 表示相隔时间的类型,代码为:
  “y“表示“年”
  “m“表示“月”
  “d“表示“日”
  “h“表示“时”
  “n“表示“分”
  “s“表示“秒”。
       1.dateadd():
        公式dateadd(时间类型,增量,字段名),如dateadd(M,3,入学时间)在入学时间字段中原来的月份上加3显示。
         实现:将地区是大连的学生的入学日期推后5天。
       update student set datetime =dateadd(d,5,datetime) where diqu='大连'

      2.datediff():
     公式dateiff(时间类型,开始时间,结束时间),如select datediff(M,'1988-1-1','2000-1-1')将得到结束时间与开始时间中相差的月份数144。
       3.datename():
      公式datename(时间类型,字段名),如datename(d,入学时间)将得到所有学生入学当天的日。
         实现:查询出所有学生入学当天的月份数。
       select datename(M,datetime) from student
       得到的月份为05,06,07
       4.datepart():
     用法与datename()相同,使用此函数完成上述查询
        select datepart(M,datetime) from student
       得到的月份为5,6,7……,说明将得到日期部分的整数
       5.day()、month()、year():
     公式为day(字段名)将得到字段中所有的日子,其他用法相同。
        使用month()方法实现上述查询
       select month(datetime) from student
        得到结果与datepart()相同,为整数的月份数。
       6.getdate():
          得到当前系统时间
       7.getutcdate():
          得到当前UTC时间
       select getdate(),getutcdate()
本文转自叶子文文博客51CTO博客,原文链接http://blog.51cto.com/leafwf/185776如需转载请自行联系原作者

叶子文文
相关文章
|
25天前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
1月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
1月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
|
1月前
|
SQL 存储 数据管理
SQL数据库的使用指南:从入门到精通
随着信息技术的飞速发展,数据库已成为各类企业和组织不可或缺的一部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各种场景,如数据存储、数据管理、数据分析等。本文将详细介绍SQL数据库的使用方法,帮助初学者快速入门,并帮助有经验的开发者深化理解。一、SQL数据库基础首先,我们需要理解SQL数
99 2
|
19天前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)
|
1月前
|
SQL 关系型数据库 MySQL
SQL日期函数
SQL日期函数
|
1月前
|
SQL 安全 关系型数据库
SQL自动化注ru-SQLmap入门操作(一)
SQL自动化注ru-SQLmap入门操作(一)
|
1月前
|
SQL 安全 关系型数据库
SQL自动化注茹-SQLmap入门操作(二)
SQL自动化注茹-SQLmap入门操作(二)
|
2月前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
83 6
|
2月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
下一篇
无影云桌面