前言 当数据库里存储的值是以逗号分隔格式存储的字符串时. 数据格式如下: id name ids 1 张三 a,b,c 2 李四 c,d,e 我们拿到的条件参数是:b,e 1.后台通过逗号分隔数组,生成查询语句 select * from table where ids in (’b’,’e’) 2.通过myBatis自带功能foreach,直接把逗号分隔的字符串传到mapper.xml即可,后台不用过多操作. <select id="getSimilarity"
Oracle存储过程,经常会遇见传入的参数是逗号分隔. 处理需要3步: 第一步,创建Type类型 第二部,创建函数 第三部,创建存储过程 代码如下: 第一步: create or replace type varTableType as table ) 第二步: create or replace function str2numList123( p_string in varchar2 ) return varTableType as v_str long default p_string |
报表需要过滤掉不需要的数据,由于报表是根据零件编号来统计,需要过滤掉不合格品,只能根据关联的物料编码(零件编号)来过滤,只能通过not in来过滤,但是天真的我却用下面代码来当子查询: b.part_no not in (select replace(wm_concat(t.materielcode),',',''',''') from quality_check t where t.materielcode is not null) 怎么都过滤不掉,这是因为IN 后不是字符串而是一个结果集:上
public class SpiltString { public String spilt(String str) { StringBuffer sb = new StringBuffer(); String[] temp = str.split(","); for (int i = 0; i < temp.length; i++) { if (!"".equals(temp[i]) && temp[i] != null) s
CREATE PROCEDURE [dbo].[Pro_TEST] AS BEGIN ) ) SET @split=',' SET @c='025,023,014,015' )) ) BEGIN INSERT #T( col ) , ) ) , CHARINDEX(@split, @c), '') END INSERT #T( col ) VALUES ( @c ) SELECT * FROM #T END GO --execute Pro_TEST
首先,我们创建一个逗号分隔字符串. 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','1,2,4'); INSERT INTO test(pname,pnum) VALUES('产品2