sqlserver 怎么将一个字段中61,62逗号隔开的的多个数据转变成另一张表中一个字段对应的多个数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 怎么将一个字段中61,62逗号隔开的的多个数据转变成另一张表中一个字段对应的多个数据相关的知识,希望对你有一定的参考价值。
比如将'61,62'这一个字段变成'系统,测试'
创建表
create table t1(str varchar(100))
insert into t1 values (\'61,62\')
create table t2
(id int,
部门 varchar(10))
insert into t2 values (59,\'采购部\')
insert into t2 values (56,\'生产部\')
insert into t2 values (60,\'业务\')
insert into t2 values (61,\'系统\')
insert into t2 values (62,\'测试\')
执行:
(select s2.部门 from
(select
SUBSTRING([str],number,CHARINDEX(\',\',[str]+\',\',number)-number) as [str]
from
t1 a,master..spt_values
where
number >=1 and number<=len([str])
and type=\'p\'
and substring(\',\'+[str],number,1)=\',\') s1,
t2 s2 where s1.[str]=s2.id)
SELECT STUFF((SELECT \',\'+[部门] FROM t for xml path(\'\')),1,1,\'\')
结果:
以上sqlserver2008R2下执行
参考技术A 用函数处理后返回结果就行Android / Java,如何在某些字段中使用换行和逗号来处理csv文件?
Android / Java,如何在某些字段中使用换行和逗号来处理csv文件?
例如,每个记录有三个字段。
A, B, "Good morning,
may I get a cup of water?"
C, D, good night.
我应该怎么做才能正确解析它并将其存储到对象arraylist?
如果我读了第一行,我将错过最后一个字段的第二部分。
((我试图将opencsv添加到android项目中,但是在构建时遇到了与dex ..难以理解的错误。.so我正在尝试自己实现load csv函数,因为我只需要读取文件仅,但我无法考虑正确的逻辑。)
答案
要读取文件并保存每条记录,您可以使用:
List<String> content = Files.lines(Paths.get("app.csv")).collect(Collectors.toList());
或者如果您想保存每个以逗号分隔的字段,请使用此:
List<String> content = Files.lines(Paths.get("app.csv")).collect(Collectors.toList());
List<String> result = new ArrayList();
content.forEach((t) -> {
for(String s : t.split(",")){
result.add(s);
}
});
System.out.println(result);
结果:
[A, B, "Good morning, may I get a cup of water?", C, D, good night.]
以上是关于sqlserver 怎么将一个字段中61,62逗号隔开的的多个数据转变成另一张表中一个字段对应的多个数据的主要内容,如果未能解决你的问题,请参考以下文章
在sql server数据库中查询一个用逗号分隔的字段的问题