MySQL函数与存储过程字符串长度限制的解决
作者:Taysuesue 时间:2024-01-16 13:17:01
问题描述
MySQL函数或者存储过程中使用group_concat()函数导致数据字符过长而报错
CREATE DEFINER=`root`@`%` PROCEDURE `get_pipe_child`(IN `in_pipe2Num` varchar(25),IN `in_sectionNum` varchar(5))
BEGIN
?declare ids varchar(1000) default '';?
?declare tempids varchar(1000);?
?
?-- 先根据标段号查询出数据组成临时表
?DROP TEMPORARY TABLE IF EXISTS temp_weld_position;
?CREATE TEMPORARY TABLE temp_weld_position AS
?select t1.id,t1.section_num,t1.weld_code,t1.lon,t1.lat,t2.pipe1_num,t2.pipe2_num from
?? ?(select id,section_num,weld_code,lon,lat from weld_position where section_num = in_sectionNum and LENGTH(lon)>=7 and LENGTH(lat)>=6 and is_deleted=0) t1
?? ?join (select id,weld_code,pipe1_num,pipe2_num from weld_manage where section_num = in_sectionNum) t2 on t1.weld_code=t2.weld_code;
?-- 在根据传入的pipe2_num 递归查询出所有的数据,将pipe2_num当做id,pipe1_num当pid
?set tempids = in_pipe2Num;?
?while tempids is not null do?
? set ids = CONCAT_WS(',',ids,tempids);?
? select GROUP_CONCAT(pipe2_num) into tempids from temp_weld_position where FIND_IN_SET(pipe1_num,tempids)>0; ?
?end while;?
?
? ?select t1.id,t1.section_num,t1.weld_code,t1.lon,t1.lat,t2.pipe1_num,t2.pipe2_num from
? ?(select id,section_num,weld_code,lon,lat from weld_position where section_num = in_sectionNum and LENGTH(lon)>7 and LENGTH(lat)>6 and is_deleted=0) t1
? ?join (select id,weld_code,pipe1_num,pipe2_num from weld_manage where section_num = in_sectionNum) t2 on t1.weld_code=t2.weld_code
? ?where FIND_IN_SET(t2.pipe2_num,ids)
? ?order by FIND_IN_SET(t2.pipe2_num,ids);?? ??? ??? ??? ?
END
原因分析:
两个参数ids、tempids定义的varchar(1000),后续执行多次循环,GROUP_CONCAT拼接字符放入这两个参数时就会报字符串长度超限错误,因函数、存储过程中varchar类型最大长度为16383
解决方案:
将varchar(1000)类型变成text或者是BLOB类型解决此问题
来源:https://blog.csdn.net/Taysuesue/article/details/125272159
标签:MySQL,存储过程,字符串长度,限制
0
投稿
猜你喜欢
sql 存储过程分页代码 支持亿万庞大数据量
2024-01-24 03:31:00
python用Joypy绘制嵴线图实例
2022-03-07 02:50:43
PHP三层结构(上) 简单三层结构
2023-06-20 06:36:07
elementUI el-table二次封装的详细实例
2024-05-03 15:12:00
如何拒绝同一张表单被多次提交?
2009-12-16 18:46:00
MySQL截取和拆分字符串函数用法示例
2024-01-21 14:24:55
Git常用场景使用之分支操作
2022-01-06 02:10:56
Python学习之装饰器与类的装饰器详解
2023-11-23 20:04:07
python字符串替换的2种方法
2022-12-27 20:59:24
vscode写python时的代码错误提醒和自动格式化的方法
2023-02-25 12:54:59
python opencv3实现人脸识别(windows)
2023-11-09 11:21:17
MySQL Installer is running in Community mode 的解决办法
2024-01-19 09:14:54
Django ValuesQuerySet转json方式
2021-12-05 07:15:34
python3 unicode列表转换为中文的实例
2021-02-13 20:06:06
关于Python-pip安装失败问题及解决
2021-03-13 05:07:41
Prometheus 监控MySQL使用grafana展示
2024-01-21 07:18:53
Python管理Windows服务小脚本
2023-11-07 17:30:59
windows下mysql 8.0.12安装步骤及基本使用教程
2024-01-19 15:17:53
git push 本地项目推送到远程分支的方法(git命令版)
2022-06-16 02:03:13
Python实现常见的回文字符串算法
2022-07-10 10:32:29