mysql将一个以逗号分隔的数字字符串转出数字 10C

select * from user where id in (Ids);

说明,Ids是存储过程传过来的一个拼接的数字字符串,(1,2,3,4,5),现在的问题是。这样in之后
它只会找id=1的记录。后面的记录找不出来。不知为何。还请各位大神指点
,为什么会这麼拼接。是为我的id是一个临时表里。不能用来关联。因为存储过程里有狠多
地方用到Ids,临时表只能select一次。所以用了这个方法。
这是拼接语句varCampId是动态查询的。根据条件。可能一个。可能多个。
SET @tmpCampIds = CONCAT(@tmpCampIds, varCampId, ',');

7个回答

要把ids分开传进来,否则mysql会认为它是个整体,也就是一个id
例如: select * from user where id in (Id1,Id2,Id3);

qq_36626927
RosYuina 回复凌丿宇o: 对,就是动态传,把你sql和参数用java方法写成动态的,具体怎么写就需要根据你项目框架来写了
一年多之前 回复
TyroneSY
凌丿宇o 我的这个Id串不是固定的啊。分开传。不知道具体会有多少个啊。所以才会想着动态拼接啊。
一年多之前 回复

是你拼接的字符串的问题,你可以试着在mysql里面直接运行sql语句:
第一句:select * from user where id in (1,2,3,4,5);
第二句:select * from user where id in ('1,2,3,4,5');

第一句是没问题的,第二局只会输出id是1的数据,区别就在于,in后面的值一个是正常输入的数字,另一个是字符串,数据类型已经变了。

qq_36588972
被遗忘的我怀念的 回复TyroneSY: 这样就分开了,我测试了一下没问题
一年多之前 回复
qq_36588972
被遗忘的我怀念的 回复TyroneSY: 所以不能直接拼接成字符串,字符串是一个整体,要这样拼接select * from notes_users where user_id in ('1','2','3','4','5');
一年多之前 回复
TyroneSY
凌丿宇o 对的。我的结果就是妳的第二种结果
一年多之前 回复
qq_36588972
被遗忘的我怀念的 注意第二句的in后面我加了单引号
一年多之前 回复

可以专门写一个函数,传入一个参数,函数里面直接拼接参数里面的值

TyroneSY
凌丿宇o 这也是一个思路。
一年多之前 回复

这种你可以用预编译
SET @sel_1 = 'select * from ls_boutique where rec_id in ';

SET @sel_2 = '(1,2)';
SET @sentence = CONCAT(@sel_1,@sel_2);
PREPARE stmt FROM @sentence;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

xl5115105
xl5115105 回复TyroneSY: sql可以同时执行多条啊
一年多之前 回复
TyroneSY
凌丿宇o 这个是存储过程在用。所以里面的语句狠长的。。。。千行级的。。。。。那样狠难搞啊。
一年多之前 回复

试试FIND_IN_SET(1,'1,2,3,4,5')这个函数

TyroneSY
凌丿宇o 不行。试过了。
一年多之前 回复

反向思维not in

TyroneSY
凌丿宇o 那样数据大了。慢了。。。
一年多之前 回复

你传进来的只是第一个字符串,select * from user where id in (Ids);变成select * from user where id in (‘1’,‘2’,‘3’,‘4’,‘5’);
不行的话select * from user where id in (int(‘1’),int(‘2’),int(‘3’),int(‘4’),int(‘5’)); 我用的是db2

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
解析将数字变为以逗号分隔的字符串
数字变为以逗号分隔的字符串 string key = string.Format("{0},{1}", x, y); 解析 string[] id = key.Split(','); int xid = Convert.ToInt32(id[0]); int yid = Convert.ToInt32(id[1]);
求一个sql将未知个数逗号分隔的数字,去掉逗号以数字-数字形式输出
页面传入一个字符参数,只能由1到10之间的数字及半角逗号组成,逗号的个数未知,字段长度未知,怎么将不规则的字符串转换成标准的数字-数字形式。rn例如 传入参数 ,1,5,,6,,7,,,输出结果为1,5,6,7。
java逗号分隔数字
DecimalFormat decimalFormat = new DecimalFormat(",##0.00"); decimalFormat.format
数字三位逗号分隔
function ThreeBits(value){ var value = String(value); var left=value.split('.')[0], right=value.split('.')[1]; right = right ? (right.length>=2 ? '.'+right.substr(0,2) : '.'+right+'0') : '...
对a.txt中逗号分隔的数字进行排序,排好的数字以逗号分隔存到b.txt
public class test8 { public static void main(String[] args) throws IOException { File file = new File(“f:\a.txt”); File file2=new File(“f:\b.txt”); BufferedReader br=new
取以逗号分隔的字符串
字符串为"10,20,30,20,50"rn将以逗号隔开的数字分别取到一个整型数组中,求方法
逗号分隔数字怎么实现?
用逗号分隔每三位数字,如:输入123,456 其实表示的是一个6位数,貌似用于金钱的数额表示
每三位数字逗号分隔
'1432546563565343'.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
freemarker---大数字自动加逗号分隔&更大数字认为是字符串不用逗号分隔
使用freemarker的时候遇到了一个小问题, freemarker默认会对大数字进行逗号分隔,如果我们不想让他逗号分隔,我们可以 加?c 不让他对数字用逗号分隔 但是我的业务场景是,想让他用逗号分隔,但是出现了一个问题,就是对于有些列他没有用逗号分隔: 是不是因为数字太大了,所以他直接把他作为字符串来处理了呢! 猜想是对的,确实是转为了字符串,如果想让他用逗号分隔,那么我们需要告诉f
将一个以逗号分隔的字符串转化为一个数组
将一个以逗号分隔的字符串转化为一个数组的方法: 方法一: public class Test02 { public static void main(String[] args) { String orgStr="about,bed,check,doc,txt,from"; String [] result = orgStr.sp...
如何判断一个数字是否在一个逗号分隔的字符串中
rn比如有一个逗号分隔的字符串:rnrn12,123,1234,32,321,345 等等rnrn如何判断 数字 12 在其中?rnrn谢谢
c++输入字符串和数字以逗号隔开
#include using namespace std; int main() { string n; int a,b; getline(cin,n,','); cin>>a; if(cin.get()==',' ) cin>>b; cout<<n<<","<<a<<","<<b<<endl; return 0;
mysql将字符串转为数字
MySQL字符串+0即可转为数字: &amp;lt;!--查找版本是否满足区间--&amp;gt; &amp;lt;select id=&quot;isVersion&quot; resultType=&quot;java.lang.String&quot; parameterType=&quot;map&quot;&amp;gt; SELECT version_id from job_release_version where src_ver...
awk/grep正则匹配-找出以逗号分隔的数字列表
echo 15071700684902925088,15071700540402510152,15071700291812115134| awk '{match($0,"([0-9]+[,]+)*([0-9]+)",a)}END{print a[0]}' $0表示前面的字符串内容,([0-9]+[,]+)*([0-9]+)是整个正则表达式,表示匹配项存在0个或者多个数据和逗号组合项,考虑到单个匹
SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串
SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串
JSTL 字符串以逗号分隔转数组
JSTL 字符串以逗号分隔转数组 "col-sm-3"> "materialName" name="materialName" class="form-control"> "">---请选择物资名称--- forEach items="${materialNameList}" var="item"> set value="${ fn
求字符串以逗号分隔的最小值,与求和。
[img=https://img-bbs.csdn.net/upload/201707/29/1501265547_390273.png][/img]rnrndjj 中,如果有以逗号分隔的就取 最小值, skcd 中 两个值相加。rnrn求大神帮助。。
以逗号分隔的字符串,剔除重复的字符
string str = "a,b,b,d,d";                string[] arr = str.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);                StringBuilder sb = newStringBuilder();               
数字每隔三位用逗号分隔 js
splitNumberWithComma = (n) =&gt; { let reg = /\.\d+/; let num = (n || 0).toString(); let temp = reg.exec(num); // 获取小数部分,不存在小数则获取空字符串 let decimal = temp &amp;&amp; temp[0] ? temp[0...
关于数字用逗号分隔的正则表达式
/^((^[1-9]$)|(^1\d$)|(^2[0-5]$))(,(^[1-9]$)|(^1\d$)|(^2[0-5]$))*$/rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]帮忙看看,问题出来哪里啊,我的这些数字都不能大于25
javascript 数字每隔三位加逗号分隔
function addCommas(nStr){  nStr += '';  x = nStr.split('.');  x1 = x[0];  x2 = x.length &gt; 1 ? '.' + x[1] : '';  var rgx = /(\d+)(\d{3})/;  while (rgx.test(x1)) {   x1 = x1.replace(rgx, '$1' + '...
java数组转为以逗号分隔的字符串
/** * 将数组转换成以逗号分隔的字符串 * * @param needChange * 需要转换的数组 * @return 以逗号分割的字符串 */ public static String arrayToStrWithComma(String[] needChange) { String
如何从一个以逗号分隔的数字字串中将这些数字提取出来?
rn例如该CString形如: 1,5,100,45,67,1024rnrnCArraym_nData; // 用于保存CString中的数字rnrn如何将1/5/100/45/67/1024这几个数字保存到m_nData中呢?
如何将一个以逗号隔开的字符串中重复的数字删除??
1. 如何将字符串"0,1,5,3,2,8,6,4,9,7,10,15,18,5,15"中重复的5和15删除掉rn 删除后的字符串为"0,1,5,3,2,8,6,4,9,7,10,15,18"rnrn2. 任何将字符串安数字从小到大的顺序从新排列rn
JS将数字转换成三位逗号分隔的样式
[code=&quot;java&quot;]function formatNumber(num){ if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(num)){return num;} var a = RegExp.$1, b = RegExp.$2, c = RegExp.$3; var re = ...
数字分隔
题目 在一个遥远的国家,银行为了更快更好的处理用户的订单,决定将一整串的数字按照一定的规则分隔开来,分隔规则如下: 1、实数的整数部分按照每三个数字用逗号分隔开(整数部分的高位有多余的0时,需先将多余的0过滤后,再进行数字分隔,如:0001234567 输出结果为1,234,567.00。注意:没有小数,输出结果也要2位小数。) 2、小数部分保留两位小数(四舍五入) 3、如果该数是负的...
c# 将数组或集合 转换成以逗号分隔的字符串
class Program     {         static void Main(string[] args)         {             List&amp;lt;string&amp;gt; list = new List&amp;lt;string&amp;gt;();             list.Add(&quot;1&quot;);             list.Add(&quot;2&quot;);             ...
将几个值,以逗号分隔,存放在字符串str中
如何将几个int型的值,以逗号分隔,存放在字符串str中rnrn例如rnString[] p = “1”,“2”,“3”; 里面的值以逗号分隔,存放在一个字符串str中rn
freeMarker--数字类型字符串自动加逗号分隔问题解决
解决办法:    ${data?c}在数据后面加  ?c   就是转换为字符串。去掉逗号
数字字符串+逗号解析排序
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include //#include &lt;stdafx.h&gt; void Calculate(const charinput, const char output) { int array[128] = { 0 }; int itmp...
MySql 查询以逗号分隔的字符串的方法(正则)
现数据库表中某个字段保存的值为“01,07,08”,需要sql去查询下表中到相应的名称: NND,一点思路都木有,想了老久,突然想到了正则表达式....!啊哈哈哈..... 1、最开始想到的是find_in_set()... 查询字段中包含01,07,08的记录: SELECT * FROM test WHERE find_in_set('01',itemn
表中字段为逗号分隔的数字,去数据字典中查询返回逗号分隔字符串的方法
SELECT group_concat( `ty`.`INFORMATION_TYPE_NAME` SEPARATOR ',' ) FROM ( `BAS_INFORMATION_TYPE` `ty` LEFT JOIN `BAS_USER_CRAFTSMAN` `f` ON ( find_in_set( `ty`.`INFORMATION_TYPE_NO`, `f`.`SKI
MYSQL查询某字段中以逗号分隔的字符串的方法
首先我们建立一张带有逗号分隔的字符串。 CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCHAR(20) NOT NULL,pnum VARCHAR(50) NOT NULL);然后插入带有逗号分隔的测试数据INSERT INTO test(pname,pnum) VALUES('产品1'...
逗号分隔字符串行转列
sublime text2 2017-09-16 12:28:45,20,2947459977654079,pvestat,37,2,0,200,1661,overcustom,63,0,0,2 \n替换换行 [img]http://dl2.iteye.com/upload/attachment/0127/0472/dd05cc9c-f68d-3f1e-b01d-afdcac0ed48d.p...
匹配逗号分隔的字符串
正则表达式 ^(\s*'[a-z_A-Z_0-9_\-]+'\s*)+(,+(\s*'[a-z_A-Z_0-9_\-]+'\s*))*$ 匹配 'asdf','sdff-dfdsf','fddsdffg' [code=&quot;html&quot;] var reg = /^(\s*'[a-z_A-Z_0-9_\-]+'\s*)+(,+(\s*'[a-z_A-Z_0-9_\-]+'\s*))*$/...
样把一个以逗号分隔的字符串变成一个数组?
string str="*HQ,2081200162,V1,153822,A,3019.3907,N,12006.1753,E,000.0,000,291009,EFE7FBFF#"rnrnrn把这个str变成a="1","2","3","4","5" ,或别的数组都行,只要能用下标访问就行rnrn
怎样把一个以逗号分隔的字符串变成一个数组?
比如:"1,2,3,4,5"变成一个数组a,a="1","2","3","4","5"
VC Split分隔字符串以逗号分隔.rar
VC Split分隔字符串以逗号分隔,拆分一个完整的字符串,用,号分隔成多个字符串。大家也可把这个示例看做是VC 使用Split函数的一个例子,因为这个拆分字符串的功能主要是基于Split函数来实现的。
将逗号分隔的字符串 转换成 Byte数组,
[code=&quot;java&quot;]package net.okren.java; import java.util.*; //将逗号分隔的字符串 转换成 Byte数组, class GetByte{ public byte[] getByte(String str){ System.out.println(&quot;getByte...&quot;); int wn = 0; for(int ...
Java8 将List转变为逗号分隔的字符串
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Test { /** * 将List转变为逗号分隔的字符串 * * @param args */ public static void main(String[] args) { ...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池