网站评论做外链,晋城网站建设电话,嘉兴哪里可以做淘宝网站,建筑人网站前言 数据库原理及应用(MySQL版).以下称为本书中3.1.2节内容
引入 数据库常用系统函数的分析.上一篇帖子分析了,数据库函数需要看看能否被C语言函数替代
1.字符串函数
1)计算字符串字符数的函数和字符串长度的函数
语法: CHAR_LENGTH(str)…前言 数据库原理及应用(MySQL版).以下称为本书中3.1.2节内容
引入 数据库常用系统函数的分析.上一篇帖子分析了,数据库函数需要看看能否被C语言函数替代
1.字符串函数
1)计算字符串字符数的函数和字符串长度的函数
语法: CHAR_LENGTH(str); //计算字符个数 LENGTH(str); //返回字符串字节长度
代码如下(相比起例3-10有一点修改)
SET namechina;
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 *tmporiginal;while(*tmp ){ tmp;original;}while(*tmp!\0)*tmp*original;*tmp\0;return tmp;
}
2.删除尾部空格
/*删除尾部空格*/
char* remove_trailing_spaces(char* original){char *tmporiginal;int length0;while(*tmp!\0){length;tmp;}while(*tmp ){tmp--;length--;}for(int i0;ilength;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的程序模型分析