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

发布于:2025-08-31 ⋅ 阅读:(19) ⋅ 点赞:(0)

前言

        "<数据库原理及应用>(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的程序模型分析


网站公告

今日签到

点亮在社区的每一天
去签到