MySql_函数

 函数

单行函数:

        操作一行数据返回一行数据,操作10行数据返回10行数据

数值型函数

        绝对值

select abs(100),abs(-100) from number;

        正负值

-- 判断数字的正负值
-- 返回1      正值
-- 返回-1     负值
-- 返回0      0
select sign(100),sign(-100),sign(0) from number;

        返回较大的最小整数

-- 向上取整
select ceil(3.1) from number;

        返回较小的最大整数

-- 向下取整
select floor(3.1) from number;

        返回x的y次幂

select power(2,3) from number;

        取余:mod(x,y)

        四舍五入:round()

        截取后的值:trunc()

        

字符串函数

        长度

select name , length(name) from user;

        截取

-- SUBSTR 截取 (第1个字符 + 3个字符长度)
select name,SUBSTR(name,1,3) from user;

        大小写

-- upper 大写
-- lower 小写
select name,upper(name),lower(name) from user;

        拼接

select CONCAT(name,'=',id) from user;

        替换

-- 将name 中 'T' 替换为 '-'
select name,REPLACE(name,'T','-') from user;

日期函数

        获取当前系统时间

select sysdate() from user;

select birdate,CURRENT_DATE(),CURRENT_TIME(),CURRENT_TIMESTAMP() from user;

        日期转换

-- 格式显示年月日 时分秒
select DATE_FORMAT(sysdate(),'%Y-%m-%d %H:%i:%s') from user;

        分别获取 年月日 时分秒 星期

-- EXTRACT 获取函数
-- SECOND秒    MINUTE分钟    HOUR小时    DAY天    WEEK星期    MONTH月    YEAR年
select EXTRACT(MINUTE FROM sysdate())

        日期的加减操作

-- 将当前的日期增加9天
select ADDDATE(now(),9) from user;

-- 将当前的日期减去9天
select ADDDATE(now(),-9) from user;

-- 将字符串格式成时间格式
select DATE('2021-9-1');

转换函数

        日期转字符串

date_format(date,expr)
select DATE_FORMAT(sysdate(),'%Y-%m-%d %H:%i:%s');

        字符串转日期

select STR_TO_DATE('2021-9-1 20:2:23','%Y-%m-%d %H:%i:%s');

        数字转字符串

       直接拼接一个字符串,自动转换

        字符串转数字

        依靠函数提供的参数

其他函数

        空值函数:IFNULL(colum,value)

-- 将id与age相加,如果age为null,则处理为0
select id+IFNULL(age,0) from user;

        加密处理

select MD5("amazing") from user;

多行函数

        不管函数处理多少条,只返回一条记录

        分为多个组时,返回的记录与组数相同

        不能将组函数和普通列写在一起查询

        返回最大值:max

        返回最小值:min

        返回平均值:avg

        返回求和:sum

        返回求总数:count

select max(grade), min(grade), sum(grade),count(id),avg(grade) from class;

### MYSQL_RESULT 的使用说明 `MYSQL_RESULT` 是 MySQL C API 中的一个结构体,用于存储通过 `mysql_store_result()` 或 `mysql_use_result()` 获取的查询结果集。它包含了查询返回的数据表的相关信息。 #### 1. 结构定义 `MYSQL_RESULT` 并不是一个可以直接使用的函数,而是一个由 MySQL 客户端库管理的结果集对象。通常情况下,开发者不会直接操作这个结构体,而是通过一系列接口函数来访问其内容[^3]。 #### 2. 常见关联函数 以下是与 `MYSQL_RESULT` 密切相关的几个重要函数: - **`mysql_store_result()`**: 将整个结果集加载到客户端内存中,并返回一个指向 `MYSQL_RES` 对象的指针。如果查询不返回任何数据,则可能返回 NULL。 - **`mysql_use_result()`**: 不会将结果集一次性加载到内存中,而是允许逐行获取数据。这种方式适合处理非常大的结果集,但需要注意资源释放问题。 - **`mysql_fetch_row(MYSQL_RES *result)`**: 返回当前结果集中的一行记录作为一个数组,每列对应数组中的一个元素。当没有更多行时返回 NULL[^2]。 - **`mysql_num_rows(MYSQL_RES *result)`**: 计算指定结果集中包含多少条记录(仅适用于 `mysql_store_result`) [^3]。 - **`mysql_free_result(MYSQL_RES *result)`**: 当完成对某个结果的操作之后应该调用此方法释放分配给它的内存空间。 #### 3. 示例代码 下面展示如何利用上述提到的功能实现基本的数据检索过程: ```c #include <mysql.h> #include <stdio.h> int main(){ MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; conn = mysql_init(NULL); /* Connect to database */ if (!mysql_real_connect(conn, "localhost", "root", "", "testdb", 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } /* Execute SQL query */ if (mysql_query(conn, "SELECT id,name FROM users")) { finish_with_error(conn); } res = mysql_store_result(conn); // Store result set if(res){ printf("Result:\n"); while ((row = mysql_fetch_row(res))) { // Fetch each row one by one. printf("%s %s\n", row[0], row[1]); } mysql_free_result(res); // Free memory after use. }else{ fprintf(stderr,"%d\n",mysql_errno(conn)); } mysql_close(conn); return EXIT_SUCCESS; } ``` 以上程序展示了连接至数据库服务器、执行 SELECT 查询以及遍历输出每一项的过程[^4]。 #### 4. 注意事项 - 如果尝试从非 SELECT 类型语句(如 INSERT/UPDATE)上调用 `mysql_store_result()` ,则总是得到 NULL 指针作为回应。 - 调用了 `mysql_store_result()` 后记得及时清理不再需要的结果集合以免造成泄漏;同样地,在结束应用程序之前关闭所有打开过的链接也是必要的良好习惯。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值