首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用vba将字符串值拆分到access表的一列中

如何使用vba将字符串值拆分到access表的一列中
EN

Stack Overflow用户
提问于 2014-02-19 16:31:06
回答 1查看 395关注 0票数 0

我有一个表,其中的列如下

代码语言:javascript
运行
复制
Prefix    CR
g         ;#WR_1;#WR_2;#WR_3;#WR_4;# 
v         ;#WR_3;#WR_4;#
j         WR_2
m         WR_1
d         ;#WR_3;#WR_4;#   
f9        WR_3

我在列;#WR_1;#WR_2;#WR_3;#WR_4;#中找到CR中最大的字符串

代码语言:javascript
运行
复制
    select top 1 CR,Prefix from table1 order by len(CR) desc 

和回报

代码语言:javascript
运行
复制
Prefix        CR
g             ;#WR_1;#WR_2;#WR_3;#WR_4;# 

我想将这个字符串;#WR_1;#WR_2;#WR_3;#WR_4;#拆分为列名,如下所示

代码语言:javascript
运行
复制
Prefix  WR_1    WR_2   WR_3   WR_4

或者作为一个数组

代码语言:javascript
运行
复制
WR_1
WR_2
WR_3
WR_4
EN

回答 1

Stack Overflow用户

发布于 2014-02-19 17:13:29

因此,这不是一个非常好的解决方案,但正如您所要求的那样:

代码语言:javascript
运行
复制
create table #Blah(Prefix nvarchar(5), CR nvarchar(60))

insert into #Blah
values('g', ';#WR_1;#WR_2;#WR_3;#WR_4;#')
insert into #Blah
values('v', ';#WR_3;#WR_4;#')
insert into #Blah
values('j', 'WR_2')
insert into #Blah
values('m', 'WR_1')
insert into #Blah
values('d', ';#WR_3;#WR_4;#')
insert into #Blah
values('f9', 'WR_3')

SELECT Prefix, [WR_1], [WR_2], [WR_3], [WR_4]
FROM(
    SELECT Prefix, SUBSTRING(CR+';#', num, CHARINDEX(';#', CR+';#', num) - num) Item, convert(int,NULL) Col
    FROM #Blah 
        inner join Numbers on num <= LEN(REPLACE(CR,' ','|')) AND SUBSTRING(';#' + CR, num, LEN(REPLACE(';#',' ','|'))) = ';#'
    WHERE SUBSTRING(CR+';#', num, CHARINDEX(';#', CR+';#', num) - num) > ''
    ) q
PIVOT (
    MAX(Col) FOR Item IN ([WR_1], [WR_2], [WR_3], [WR_4])
) p

drop table #Blah

这个查询使用一个名为Numbers的表,它只使用一个列Num,该列对1到10,000之间的每一个数字都有一行。

我不知道为什么将数据作为列标题将有助于填充下拉列表,将数据作为行获取,只需删除枢轴,只需使用内部查询(别名q )即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21886535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档