当前位置: 首页 > news >正文

数据库原理及应用_数据库基础_第3章数据库编程_常用系统函数

前言

        "<数据库原理及应用>(MySQL版)".以下称为"本书"中3.1.2节内容

引入

        数据库常用系统函数的分析.上一篇帖子分析了,数据库函数需要看看能否被C语言函数替代

1.字符串函数

1)计算字符串字符数的函数和字符串长度的函数

语法:

        CHAR_LENGTH(str);        //计算字符个数

        LENGTH(str);                    //返回字符串字节长度

代码如下(相比起例3-10有一点修改)

SET @name='china';
SELECT CHAR_LENGTH(@name) 字符数,LENGTH(@name) 字符长度;

运行结果

实用性分析:C语言中有计算字符串长度的函数(没有自己写一个也行,问题不大)

2)合并字符串函数

语法:

        CONCAT(str1,str2....);        //返回连接参数产生的字符串,如果有NULL,返回NULL

代码如下

SELECT CONCAT('MySQL版本:',@@version) 版本信息;

运行结果

实用性分析:C语言中有strcat函数处理字符串连接(两个函数名都有cat).

3)字符串大小写转换函数

在C语言中也有大小写转换函数.

        试想他的应用场景:如果数据库中已确定所有该字段的符号是大写或者小写,那么可以在传入的时候先行用C语言函数处理,这种情况下可以不看这个函数,因为在传入之前可以先处理.同理如果返回值全部大写或小写,也可以用C语言处理.

4)删除空格函数

=============================内容分割线↓===================================

以下代码有问题待查

笔者尝试给出几个删除空格函数的C语言定义

1.删除前导空格

/*删除前导空格*/
char* remove_leading_spaces(char* original){char *tmp=original;while(*tmp=" "){    tmp++;original++;}while(*tmp!='\0')*tmp++=*original++;*tmp='\0';return tmp;
}

2.删除尾部空格

/*删除尾部空格*/
char* remove_trailing_spaces(char* original){char *tmp=original;int length=0;while(*tmp!='\0'){length++;tmp++;}while(*tmp=' '){tmp--;length--;}for(int i=0;i<length;i++)*tmp++=*original++;  return tmp;
}

不知道什么原因,编译通过了显示结果有问题,所以待查.

以此也说明学了的东西要经常看和使用,不然会生疏.

=============================内容分割线↑===================================

3.删除前导和尾部空格

        调用函数1和2即可.

说明:删除空格的应用场景和上面一样,基本上可以不用.

5)取子串函数

本书P76例3-14的改写命令需注意

2.数学函数

包括取绝对值等函数在里面,按照原则来说,用外层宿主语言来处理更好,所以没有什么必要看

3.日期和时间函数

        在C语言标准库里有个time.h的头文件,里边也有类似处理系统时间的函数,虽然用得不多(可能有的人都没听说过),但确实可以替代数据库的日期和时间函数.

4.系统信息函数

        这些函数由于和MySQL数据库有关,所以在必要的情况下使用.

嵌套SQL的程序模型

        在高级语言如C/C++中,使用的是"数据类型(数据结构)+函数定义"建立文件,主程序调用文件里的函数---这一整体思路来编写程序.现在多了数据库的操作.而操作数据库的语言SQL有个特点:就一个执行语句.如何将高级语言的程序思路继续放到引入数据的程序中呢?

        外层函数传入参数给语句,语句封装SQL函数(或过程).数据返回到宿主语言的某个数据类型中.

        如图所示:

                

        从根本上讲,SQL是要取得数据库的数据,至于取得的数据由SQL语言处理,还是交给宿主语言处理,这是数据库设计者决定的.笔者个人看法是所有的数据处理都由宿主语言处理.因为数据库要考虑多人使用,尽可能占用最小的空间,最大可能提高交互的速度,笔者想到的原因很简单:如果定义了数据库函数,岂不是会让数据库的性能下降?---当然也仅属于个人看法.

小结

        数据库常用系统函数的分析,嵌套SQL的程序模型分析

http://www.dtcms.com/a/358259.html

相关文章:

  • 骑行商城怎么开发
  • 【金仓数据库产品体验官】KingbaseES-ORACLE兼容版快速体验
  • 国家统计局数据分析01——机器学习
  • GD32VW553-IOT 基于 vscode 的 bootloader 移植(基于Cmake)
  • 【DreamCamera2】相机应用修改成横屏后常见问题解决方案
  • 阿里云营业执照OCR接口的PHP实现与技术解析:从签名机制到企业级应用
  • LZ4 解压工具(WPF / .NET 8)说明书
  • Java Stream API并行流性能优化实践指南
  • 基于Kubernetes自定义调度器的资源隔离与性能优化实践指南
  • 从 0 到 1 构建零丢失 RabbitMQ 数据同步堡垒:第三方接口数据零丢失的终极方案
  • 人工智能学习:Python相关面试题
  • 人工智能学习:Linux相关面试题
  • 98、23种设计模式之代理模式(7/23)
  • spark.sparkContext.broadcast() 与 org.apache.spark.sql.functions.broadcast 的区别
  • 开源PPT生成智能体(Agent)全景透视:技术路线、代表项目与未来趋势
  • 鸿蒙ArkTS 核心篇-15-条件渲染(组件)
  • 三重积分的性质
  • [论文阅读] 人工智能 + 软件工程 | 从“法律条文”到“Gherkin脚本”:Claude与Llama谁更懂合规开发?
  • comfUI背后的技术——VAE
  • [创业之路-581]:如何驾驭不确定性和风险,并从中获利?
  • 什么是雪花算法
  • [Mysql数据库] 知识点总结7
  • 直播间整蛊玩法
  • 【一】Django框架版本介绍
  • 2025 批量下载hasmart所有知乎回答,文章和想法,导出txt,html和pdf
  • OSI与TCP/IP各层功能详解
  • 计算机毕设javayit商城 基于SSM框架的校园二手交易全流程管理系统设计与实现 Java+MySQL的校园二手商品交易与供需对接平台开发
  • java字节码增强,安全问题?
  • python pyqt5开发DoIP上位机【介绍】
  • 【Big Data】AI赋能的ClickHouse 2.0:从JIT编译到LLM查询优化,下一代OLAP引擎进化路径