mysql 获取当前类别及所有子类别id

本文介绍了一个使用MySQL存储过程实现的递归函数getTreeCategory,该函数能够根据提供的根节点ID遍历整个分类树并返回所有子节点的ID。通过不断调用自身并将结果拼接起来,最终可以构建出一个完整的分类树结构。
CREATE  FUNCTION `getTreeCategory`(rootId INT) RETURNS VARCHAR(1000) CHARSET utf8
BEGIN
 DECLARE sTemp VARCHAR(1000);/*定义一个临时字段来存放所有的类别与子类别*/
    DECLARE sTempChd VARCHAR(1000);/*定义一个临时字段,来得到当前类别的子类别*/
    SET sTemp = '';
    SET sTempChd =CAST(rootId AS CHAR);
    WHILE sTempChd IS NOT NULL DO
        SET sTemp = CONCAT(sTemp,',',sTempChd);/*将以前类别与现在查询类别进行合并*/
        /*将每次查到的子id形成一个字符组,放到sTempChd里,如果sTempChd为null就停止循环*/
        SELECT GROUP_CONCAT(catid) INTO sTempChd FROM tblName WHERE FIND_IN_SET(parentid,sTempChd)>0;
    END WHILE;
    SET sTemp = SUBSTRING(sTemp,2,CHAR_LENGTH(sTemp));
    RETURN sTemp;        
    END$$

 

测试结果

select getTreeCategory(0);

<think>我们被要求生成MySQL所有系统函数的清单。根据引用[3]和引用[4],我们知道MySQL有许多内置函数,包括系统信息函数、数学函数、字符串函数等。但是,用户要求的是“所有”系统函数列表。实际上,MySQL官方文档提供了完整的函数列表,但我们可以通过查询MySQL系统数据库或使用SHOW命令来获取函数列表吗? 在MySQL中,我们可以通过查询`INFORMATION_SCHEMA.ROUTINES`表来获取存储函数和存储过程的信息,但这通常不包括内置的系统函数。内置函数是MySQL预定义的,并不存储在`INFORMATION_SCHEMA`中。 因此,我们无法通过一个SQL查询来获取所有内置函数的完整列表。通常,我们需要参考MySQL官方文档。但是,我们可以通过另一种方式:在MySQL命令行中,使用`HELP`命令来查看函数类别,例如: HELP 'Functions' 或者,我们可以使用以下SQL查询来获取一部分内置函数(但这并不完整): SELECT name FROM mysql.func; 但是,请注意,`mysql.func`表存储的是用户自定义函数(UDF),而不是内置函数。 所以,正确的方法是查阅官方文档。但是,我们可以根据引用[3]和[4]以及一般知识,列出一些常用的类别和函数。 考虑到用户的需求,我们给出一个分类的函数列表,并尽可能多地列出常见的内置函数。由于函数非常多,我们只列出主要类别和部分函数。 根据MySQL官方文档(版本8.0),内置函数主要分为以下几类: 1. 字符串函数 2. 数值函数 3. 日期和时间函数 4. 流程控制函数 5. 加密和压缩函数 6. 信息函数 7. 聚合函数 8. 其他函数 下面我们列出一些常用函数(非完整列表):</think>### MySQL 获取所有系统函数列表 在 MySQL 中,**没有直接的 SQL 命令可以一次性列出所有内置系统函数**,但可通过以下方法获取完整清单: #### 方法 1:查阅官方文档(最权威) 👉 访问 [MySQL 8.0 官方函数文档](https://dev.mysql.com/doc/refman/8.0/en/functions.html),包含 **200+ 系统函数**的完整分类说明。 #### 方法 2:通过系统库查询(部分函数) ```sql -- 查看函数基本信息 SELECT ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'sys'; ``` #### 主要函数分类及常用示例 根据引用[3][4],核心类别包括: 1. **数学函数** ```sql ABS(-5) -- 绝对值 → 5 ROUND(3.1415,2) -- 四舍五入 → 3.14 POW(2,3) -- 幂运算 → 8 RAND() -- 随机数 [0,1) ``` 2. **字符串函数** ```sql CONCAT('My','SQL') -- 拼接 → 'MySQL' LENGTH('数据库') -- 字节数 → 9 (UTF-8) SUBSTR('Hello',2,3) -- 串 → 'ell' ``` 3. **日期时间函数** ```sql NOW() -- 当前日期时间 → '2023-10-01 12:30:45' DATE_ADD(NOW(), INTERVAL 7 DAY) -- 日期加法 YEAR('2023-10-01') -- 提取年份 → 2023 ``` 4. **系统信息函数** ```sql VERSION() -- MySQL版本 → '8.0.33' DATABASE() -- 当前数据库名 USER() -- 当前用户 → 'root@localhost' CONNECTION_ID() -- 连接ID ``` 5. **聚合函数** ```sql COUNT(), SUM(), AVG(), MAX(), MIN() ``` > 💡 完整函数清单需参考官方文档,不同MySQL版本函数可能有差异[^3][^4]。 --- ### 相关问题 1. 如何查询 MySQL 中某个特定函数的使用方法(如 `DATE_FORMAT`)? 2. MySQL 8.0 新增了哪些重要函数? 3. 自定义函数(UDF)和内置系统函数有何区别? 4. 函数 `CHAR_LENGTH()` 和 `LENGTH()` 在处理中文时有何不同? [^1]: 字符串长度函数示例 [^3]: 系统信息函数类别 [^4]: 数学函数与字符串函数实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值