在mysql存储过程中拼接sql解决in的字段类型不匹配问题
一个朋友问我一个问题,他写了一个存储过程,并在存储过程调用了另外一个自定义的函数。该函数返回类型如'1,34,56'的字符串,并将该字符串作为存储过程的select的id条件。
beginDECLARE my_id integer(10);set @var = func_name();// var = '1,456';select id into @my_id from student where id in(@var);return @my_id; end;
select语句in里的是函数返回的带引号的字符串,而系统表里id字段是整形,所以需要拨去单引号。
方法有三:
1. 直接把函数返回作为子查询,
select id into @my_id from student where id in(select * from func_name);
2. 在存储过程拼接sql
BEGIN#Routine body goes here... set @var = func_name(); set @sql = CONCAT('select id,name from student where id in(',@var,')');PREPARE stmt from @sql; EXECUTE stmt;END
3. 拆分存储过程
将存储过程拆分,在前端java里分开执行,第一步执行函数,拿到结果在java里拼接不带引号的sql in语句即可。
ok!
在mysql存储过程中拼接sql解决in的字段类型不匹配问题相关推荐
- mysql存储过参数拼接_mysql 存储过程动态拼接sql并执行赋值
CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50)) BEGIN ## 定义变量 DECLARE _num FL ...
- mysql 存储过程中limit
mysql 存储过程中limit 1.mysql的高版本(5.5),存储过程中的limit可以使用变量,如下:select * from student limit iStart,iNum; 2.my ...
- mysql存储过程中as_Mysql存储过程中的delimiter
这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...
- linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法
中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...
- mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- mysql扩展中如何处理结果集_我们如何处理MySQL存储过程中的结果集?
我们可以使用游标来处理存储过程中的结果集.基本上,游标允许我们迭代查询返回的一组行并相应地处理每一行. 为了演示在MySQL存储过程中CURSOR的用法,我们基于以下名为" student_ ...
- MySQL存储过程中的3种循环
MySQL存储过程中的3种循环 在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易 ...
- 存储过程中定义sql语句_学习SQL:用户定义的存储过程
存储过程中定义sql语句 Stored procedures (SPs) are one more powerful database object we have at our disposal. ...
- mysql 存储过程中 if else的使用 和赋值方式
mysql 存储过程中 if else的使用 和赋值方式 在mysql 中顶一个变量的语法 DECLARE variable_name datatype(size) DEFAULT default_v ...
- mysql中sql插入时间_mysql中使用sql语句插入日期时间类型的写法
[例子如下: select * from ( select rownumber() over() as rownumber, id from associate ) as temp where row ...
最新文章
- 样本不均衡SMOTE算法代码实列
- 关系型数据库与NOSQL
- Python补充01 序列的方法
- 云漫圈 | 女生适合做程序员吗?
- 【PAT乙】1069 微博转发抽奖 (20分) set
- android 分辨率适配的方法
- 学习笔记-Bandit-WalkThrough
- 微软易升级服务器,通过“微软Windows10易升”升级Win10 1803全程图解
- Linux7(CentOs7.5)安装ssh、和修改ssh端口号
- LGTM,XGBOOST,LIGHTGBM
- halcon 缺陷检测 表面凸点检测
- 【沃顿商学院学习笔记】公益创业——01开始公益创业Starting a Social Enterprise
- Http请求体被转义
- 周易六十四卦——同人卦
- win10关闭任务栏窗口预览
- Linux中断——request_irq
- PyTorch之—可视化(Visdom/TensorboardX)
- 大写汉字转阿拉伯数字c语言,阿拉伯数字转换成中文大写数字
- .com域名到期 续费期和偿还期有什么区别?
- 微信认证年审 涉及支付 充值等信息 需要校验合同
热门文章
- JavaSE学习笔记--Item1 注解Annotation
- HTML——超文本标记语言(表单及12个表单元素)
- 来到博客园许久,却还未开始写一篇自己的博客。从今天开始,每周都会更新自己的学习内容。...
- J2SE基础夯实系列之正则表达式Java
- iOS xcode The certificate used to sign Administrator has either expired or has been revoked. An u
- jmeter接口测试json详解
- 第一次面试且失败的经历
- 介绍下Javascript原型和原型链的特点?
- Unity线程安全:CompareBaseObjectsInternal can only be called from the main thread
- TreeMap按照key排序