关于ACCESS数据库,字段拆分
发布网友
发布时间:2022-04-08 18:31
我来回答
共2个回答
热心网友
时间:2022-04-08 20:01
SELECT Left([Condition],InStr([condition],"/")-1) AS 字段1, Mid([Condition],InStr([condition],"/")+1,InStr(Mid([condition],InStr([condition],"/")+1),"/")-1) AS 字段2, Mid(Mid([condition],InStr(Mid([condition],InStr([condition],"/")+1),"/")-1),InStr(Mid([condition],InStr(Mid([condition],InStr([condition],"/")+1),"/")-1),"/")+1) AS 字段3
FROM temp;追问请问在哪里添加这个代码?
追答在查询的SQL视图中,将上面复制过去就可以了,注意表的名称不是temp而是你的表名。
热心网友
时间:2022-04-08 21:19
两种办法:
一种是在模块里把数据集整理出来,用VB语句来完成更新,这种办法消耗系统内存,但是可以操作复杂的字段,比如一个字段里有两个/的也有多个/的,都可以把他们分解开整理起来。
还有一种节约内存,那就是直接用内置函数解决,SQL语句这么写就好了:
Select Left(Condition,InStr(Condition,'/')-1) as 汽车类型, Left(Right(Condition,Len(Condition)-InStr(Condition,'/')),InStr(Right(Condition,Len(Condition)-InStr(Condition,'/')),'/')-1) as 系列, Right(Right(Condition,Len(Condition)-InStr(Condition,'/')),Len(Right(Condition,Len(Condition)-InStr(Condition,'/')))-InStr(Right(Condition,Len(Condition)-InStr(Condition,'/')),'/'))) as 车名 From 表;
如此复杂的SQL查询语句罕见吧,但是运行起来比第一种快,如果是SQL Server就直接写函数过程了,但ACCESS做不到,在ACCESS里用SQL语句你要先判断“/”在第几位:
Instr(Condtion,'/')
这意思是在字段中第一个“/”出现的位数,当你知道第一个“/”位数那就取他左边开始位数-1位字符就是“汽车类型字段”,后面的“/”是根本判断不了的,你要先把后面的字符拆分开再做同样的事情。所以后面的表达式就会那么长,其实不烦琐,这就是你所说的字段拆分
Right(Condition,Len(Condition)-InStr(Condition,'/')) 就是第一个“/”后面的字符表达式。不知道你看懂没有。其实如果你不理解就用查询设计器,类似一个PetShop的界面,第一个字段输入:
车类型: Left(Condition,InStr(Condition,'/')-1)
第二个字段输入:
系列车名: Right(Condition,Len(Condition)-InStr(Condition,'/'))
保存为查询1,查询1里就是车类型和系列车名两个字段了。
查询1里继续做同样的事情,再把系列车名给拆分掉。这种没刚才直接写SQL语句快,因为他在查询两个查询,要计算存储过程。