读SQL学习指南(第3版)笔记11_字符串函数和数值函数

1. 尽管SQL标准指定了部分函数,但数据库厂商并没有遵循这些函数规范

2. 字符串

2.1. char

2.1.1. 固定长度、不足部分用空格填充的字符串

2.1.2. MySQL允许的char类型的最大长度为255个字符

2.1.3. Oracle Database允许的最大长度为2,000个字符

2.1.4. SQL Server允许的最大长度为8,000个字符

2.2. varchar

2.2.1. 变长字符串

2.2.2. MySQL允许的varchar类型的最大长度为65,536个字符

2.2.3. Oracle Database(通过varchar2类型)允许的最大长度为4,000个字符

2.2.4. SQL Server允许的最大长度为8,000个字符

2.3. text

2.3.1. MySQL和SQL Server

2.4. clob

2.4.1. Oracle Database

2.5. 保存非常大的可变长字符串

2.5.1. 文档

2.5.2. MySQL有多种text类型(tinytext、text、mediumtext和longtext),可用于最大4GB的文档

2.5.3. SQL Server为最大2GB的文档提供了单一的text类型

2.5.3.1. SQL Server 2005还包括varchar(max)数据类型,并建议使用其代替text类型,text类型将在未来的某个版本中被删除

2.5.4. Oracle Database包括clob数据类型,可保存最大为128TB的巨大文档

2.6. 可以配置MySQL和SQL Server以实现悄无声息地截断字符串,而不是抛出异常

2.7. 从MySQL 6.0版开始,默认行为是“strict”模式,意味着在发生问题时抛出异常,而在早先版本的服务器中,字符串会被截断,并发出警告,如果希望数据库引擎采取这种方式,可以选择ANSI模式

2.8. 避免字符串被截断(或是在Oracle Database和MySQL的strict模式下抛出异常)的最好方法是将列长度的上限设置得足够大,以容纳可能存储在其中的最长的字符串(服务器只会分配足以存储字符串的空间,所以为varchar列设置长度更大的上限并不会浪费存储资源

2.9. 包含单引号

2.9.1. 需要在字符串中添加转义字符,以便服务器将字符串中的撇号视为普通字符

2.9.2. 直接在单引号前再添加一个单引号进行转义

2.9.3. mysql

 -> UPDATE string_tbl-> SET text_fld = 'This string didn''t work, but it does now';

2.9.4. Oracle Database和MySQL用户也可以选择使用反斜杠字符来转义单引号

2.9.5. sql

UPDATE string_tbl SET text_fld ='This string didn\'t work, but it does now'

2.9.6. 如果要检索字符串,以用于屏幕显示或报表字段,则无须对内嵌引号作任何特殊处理

2.9.7. 如果要将检索出的字符串添加到其他程序要读取的文件中,就需要将转义字符加入字符串

2.9.7.1. 如果使用的是MySQL,可以通过内建函数quote()来实现,该函数会将整个字符串放入引号内并对其中任意的引号/撇号进行转义

2.9.7.2. mysql

-> SELECT quote(text_fld)-> FROM string_tbl;

2.9.7.3. 在检索数据用于数据导出时,可以对所有非系统生成的字符列(比如customer_notes列)使用quote()函数

2.10. 包含特殊字符

2.10.1. SQL Server和MySQL服务器包含内建函数char()

2.10.2. Oracle Database用户可以使用chr()函数

2.10.3. 用于从ASCII字符集的255个字符中任意构建字符串

2.10.4. 需要熟悉字符集的布局,从中定位特定的字符

2.10.5. 可以使用concat()函数来拼接若干字符串,可以自行输入这些字符串,也可以通过char()函数生成

2.10.5.1. Oracle Database用户可以使用拼接运算符(||)代替concat()函数

2.10.5.2. SQL Server并未提供concat()函数,需要使用拼接运算符(+)代替

2.10.6. 可以使用ascii()函数,该函数接受字符串最左侧的字符,并返回其编码数值

2.10.7. 使用char()、ascii()和concat()函数(或者拼接运算符),应该能够处理任何罗马字符,即使所用的键盘不包括重音字符或其他特殊字符

2.10.8. 返回数值的字符串函数

2.10.8.1. length()

2.10.8.1.1. 该函数返回字符串所包含的字符数
2.10.8.1.2. SQL Server用户需要使用len()函数

2.10.8.2. position()函数

2.10.8.2.1. 字符串中查找子串的位置
2.10.8.2.2. 在使用数据库时,一定要记住,字符串的第一个字符的位置为1
2.10.8.2.3. 如果没有找到指定的子串,position()函数返回0
2.10.8.2.4. SQL:2003标准的一部分

2.10.8.3. locate()函数

2.10.8.3.1. MySQL专有的
2.10.8.3.2. 从目标字符串的其他位置开始搜索
2.10.8.3.3. 可以接受可选的第3个参数,该参数用于指定搜索的起始位置

2.10.8.4. instr()函数

2.10.8.4.1. Oracle Database专有
2.10.8.4.2. Oracle Database未提供函数position()或locate()
2.10.8.4.3. 该函数在使用两个参数时,能够模拟position()函数
2.10.8.4.4. 使用三个参数时,能够模拟locate()函数
2.10.8.4.5. 返回值0 表示没有找到指定的子串,而不是表示该子串位于字符串的位置0

2.10.8.5. charindx()函数

2.10.8.5.1. SQL Server专有
2.10.8.5.2. SQL Server也没有提供position()或locate()函数
2.10.8.5.3. 该函数和Oracle的instr()函数类似,也可以接受两个或三个参数

2.10.8.6. strcmp()

2.10.8.6.1. MySQL专有
2.10.8.6.1.1. 不区分大小写
2.10.8.6.2. 无法在Oracle Database和SQL Server中模拟
2.10.8.6.3. 一个接受字符串作为参数并返回数值的字符串比较函数
2.10.8.6.3.1. −1(第一个字符串的排序位于第二个字符串之前)
2.10.8.6.3.2. 0(两个字符串相同)
2.10.8.6.3.3. 1(第一个字符串的排序位于第二个字符串之后)
2.10.8.6.4. MySQL还允许在select子句中使用运算符like和regexp来比较字符串
2.10.8.6.4.1. 比较的结果为1(true)或0(false)

2.10.9. 返回字符串的字符串函数

2.10.9.1. concat()函数

2.10.9.1.1. 通过数据片段构建字符串
2.10.9.1.2. Oracle中使用,可以使用拼接运算符(||)来代替
2.10.9.1.3. SQL Server的拼接运算符(+)代替||

2.10.9.2. 在字符串中间添加或替换部分字符

2.10.9.2.1. insert()函数
2.10.9.2.1.1. MySQL提供的函数接受4个参数:原始字符串、起始位置、要替换的字符数量和替换字符串
2.10.9.2.1.2. mysql> SELECT INSERT('goodbye world', 1, 7, 'hello') string;
2.10.9.2.2. replace()函数
2.10.9.2.2.1. Oracle Database
2.10.9.2.2.2. SELECT REPLACE('goodbye world', 'goodbye', 'hello') FROM dual;
2.10.9.2.3. SQL Server也有replace()函数,其功能与Oracle Database的相同
2.10.9.2.4. SQL Server还提供了与MySQL的insert()函数功能相似的stuff()函数
2.10.9.2.4.1. SELECT STUFF('hello world', 1, 5, 'goodbye cruel')
2.10.9.2.5. 从字符串中提取子串
2.10.9.2.5.1. 三种数据库服务器均提供了substring()函数
2.10.9.2.5.2. Oracle Database提供的是substr()函数

3. 算术函数

3.1. acos(X)

3.1.1. 计算x的反余弦

3.2. asin(x)

3.2.1. 计算x的反正弦

3.3. atan(x)

3.3.1. 计草x的反正切

3.4. cos(x)

3.4.1. 计军x的余弦

3.5. cot(x)

3.5.1. 计算x的余切

3.6. exp(x)

3.6.1. 计算e

3.7. ln(x)

3.7.1. 计算x的自然对数

3.8. sin(x)

3.8.1. 计军x的正弦

3.9. sqrt(x)

3.9.1. 计军x的平方根

3.10. tan(x)

3.10.1. 计算x的正切

3.11. mod()函数

3.11.1. 用于计算余数

3.11.2. 常用于整数参数

3.11.3. MySQL中也可以使用实数

3.11.3.1. mysql> SELECT MOD(22.75, 5);

3.11.4. SQL Server未提供mod()函数,可以使用运算符%来代替

3.12. pow()函数

3.12.1. 返回第一个参数的第二个参数次幂

3.12.2. Oracle Database或SQL Server,则为power()函数

3.12.3. pow(2,8)是MySQL中用于计算2^8的方式

3.12.4. 计算机内存通常是以2x字节为单位分配的,所以pow()函数可以非常方便地确定某段内存确切的字节数

3.12.4.1. mysql

-> SELECT POW(2,10) kilobyte, POW(2,20) megabyte,-> POW(2,30) gigabyte, POW(2,40) terabyte;

4. 数值精度

4.1. 在处理浮点数时,可能并不总是需要使用或显示数值的全精度

4.2. ceil()

4.2.1. SQL Server使用ceiling()替代ceil()

4.2.2. 向上取整

4.2.2.1. 哪怕小数部分非常小

4.3. floor()

4.3.1. 向下取整

4.3.1.1. 哪怕小数部分非常大

4.4. round()

4.4.1. 四舍五入

4.4.2. 使用负数作为第2个参数,表示小数点左侧的部分需要被截取或取整多少位

4.5. truncate()

4.5.1. Oracle Database使用trunc()替代truncate()

4.5.2. 将不需要的小数位直接丢弃

4.5.3. SQL Server并未提供truncate()函数,而round()函数的第3个可选参数如果存在且不为0,则表明要执行截取操作,而非取整

4.5.4. 使用负数作为第2个参数,表示小数点左侧的部分需要被截取或取整多少位

5. 有符号数

5.1. abs()函数

5.1.1. 绝对值

5.2. sign()函数

5.2.1. 负数,则返回−1

5.2.2. 0,则返回0

5.2.3. 正数,则返回1

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 面试 - Redis

Redis Redis 是基于键值对的非关系型数据库。Redis 拥有string、hash、list、set、zset等多种数据结构, redis具有惊人的读写性能, 其优秀的持久化机制是的它在断电和机械故障时也不会发生数据丢失, 可以用于热点数据存放, 还提供了键过期、发布订阅、食物、流水线、LUA脚本等多…

按钮控件的基类--- QAbstractButton 类(抽象类)

1、QAbstractButton 属性 QAbstractButton 属性速查表属性名说明属性名说明autoExclusive自动排他性checked是否被选中autoRepeat是否启用自动重复down是否处于按下状态autoRepeatDelay初始延迟(毫秒)icon按钮上显示的图标autoRepeatInterval时间间隔(毫秒iconSize显示的图标的…

Vue + Element UI 前端篇(十二):用户管理模块

Vue Element UI 实现权限管理系统 前端篇(十二):用户管理模块 用户管理模块 添加接口 在 http/moduls/user.js 中添加用户管理相关接口。 import axios from ../axios/* * 用户管理模块*/// 保存 export const save (params) > {ret…

windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)

文章目录 通过端口号查看进程号netstat通过进程号定位应用程序tasklist 通过端口号查看进程号netstat 在Windows系统中,可以使用 netstat 命令来查看端口的占用情况。以下是具体的步骤: 打开命令提示符(CMD):按WinR组…

Linux简介

为什么选择Linux? Linux是一个优秀的操作系统 硬件方面:适合嵌入式,服务器,移动设备,桌面,计算机集群和超级计算机应用方面:人工智能,分布式计算,云计算,大数…

电气工程中重要的测量术语:“kVRMS” | 百能云芯

在电气工程和电子领域,术语“kVRMS”至关重要。它是工程师和技术人员用来准确评估电气系统电压的关键测量方法。在这篇综合文章中,我们将深入探讨 kVRMS 的含义、其意义、应用。 kVRMS 代表“千伏均方根”。为了理解这个术语,我们来分解一下&…

Linux的服务器日志分析及性能调优

作为网络安全和数据传输的重要环节,代理服务器在现代互联网中扮演着至关重要的角色。然而,在高负载情况下,代理服务器可能面临性能瓶颈和效率问题。本文将介绍如何利用Linux系统对代理服务器进行日志分析,并提供一些实用技巧来优化…

rpm打包

文章目录 rpm打包 1. rpm打包步骤0)准备工作:安装打包工具rpm-build和rpmdevtools(1)在线安装(2)离线安装 1)创建初始化目录2)准备打包内容3)编写打包脚本 spec文件4&…

测试需求分析

什么是软件测试需求: 灰度测试:先发布部分功能,然后看用户的反馈,再去发布另外一部分的更新 A/B测试:先发布的功能先让A部分的用户进行更新,再根据用户的犯困再更新B用户的功能 需求测试: 功…

hive 基础知识

一 hive 是什么 在本节前我们需要明确 hive 是什么 上面两个代码块,左边的是 mapreduce 的代码块,右边的是hive 的代码块 很容易看出来,右边的 hive 写起来要更容易更快些,而执行效率,右边的 hive 只比左边多一个翻译…

Redis 7 第六讲 主从模式(replica)架构篇

🌹🌹🌹 此篇开始进入架构篇范围(❤艸`❤) 理论 即主从复制,master以写为主,Slave以读为主。当master数据变化的时候,自动将新的数据异步同步到其它slave数据库。 使用场景 读写分离 容灾备份数据备份水平扩容主从架构 演示案例 注:masterauth、replicaof主…

直线导轨的替换方法

目前,直线导轨的使用率持续上升,已广泛应用在各种各样的行业中,可替换性高是其广泛使用的重要原因之一!直线导轨的替换指的就是导轨和滑块可以单出,不用整套替换。 市面上使用率最高的直线导轨品牌应该就是台湾*银了&a…

优先级队列priority_queue以及仿函数的使用

目录 优先级队列priority_queuepriority_queue的模拟实现仿函数 优先级队列priority_queue 优先级队列priority_queue是一种容器适配器,根据严格的弱排序标准,它默认第一个元素总是它所包含的元素中最大的 优先级队列默认使用vector作为底层存储数据的…

kali 安装cpolar内网穿透实现 ssh 远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过cpolar 内网穿透软件实现ssh 远程连接kali! 1. 启动kali ssh 服务 默认新安装的kali系统会关闭ssh 连接服务,我们通…

TTransportException SASL authentication not complete

今天遇见了一个异常,但是发现是自己智障了 但还是记录一下 在close的时候先close了conn再close的statement导致报的这个错

Level-based Foraging 多智能体游戏仿真环境

游戏场景测试 参考链接: https://kgithub.com/semitable/lb-foraging

CNN详细讲解

CNN(Convolutional Neural Network) 本文主要来讲解卷积神经网络。所讲解的思路借鉴的是李宏毅老师的课程。 CNN,它是专门被用在影像上的。 Image Classification 我们从影像分类开始说起。 我们举例来说,它固定的输入大小是100*100的解析度&#x…

软件行业25年技术发展史

语言时代 -> 框架时代 -> 分布式架构时代 -> 微服务架构时代 25年开发、管理,11年教培(教研总监)技术总结: 1997年 VB 1999年 ASPCOM 2004年 C# / JAVA、j2ee、ejb、struts1hibernate 2008年 旧三大框架 Struts2Spr…

MyBatisPlus之DQL编程控制

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 MyBatisPlus之DQL编程控制 一、 条件查询方式&…

zabbix安装部署

前期准备:安装mysql数据库和nginx 一、下载zabbix rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum-config-manager --enable rhel-7-server-optional-rpms yum install epel-release numactl yum install…