查询表达式对vba访问的表达过于复杂

问题描述 投票:0回答:1

嗨,来自stackoverflow的朋友

我在访问和SQL中遇到问题,请在我的查询下面找到

update finaldata set [Area]=
IIF(InStr(1,[Name],'PoolSide',1)<>0,'PoolSide',
IIF(InStr(1,[Name],'Mountainside',1)<>0,'Mountainside',
IIF(InStr(1,[Name],'Garden Area',1)<>0,'Garden Area',
IIF(InStr(1,[Name],'Ground Floor',1)<>0,'Ground Floor',
IIF(InStr(1,[Name],'Annex Building',1)<>0,'Annex Building',
IIF(InStr(1,[Name],'Beachside',1)<>0,'Beachside',
IIF(InStr(1,[Name],'Beachfront',1)<>0,'Beachfront',
IIF(InStr(1,[Name],'Mountainside',1)<>0,'Mountainside',
IIF(InStr(1,[Name],'Executive',1)<>0,'Executive Level',
IIF(InStr(1,[Name],'Lakeside',1)<>0,'Lakeside',
IIF(InStr(1,[Name],'Mezzanine',1)<>0,'Mezzanine',
IIF(InStr(1,[Name],'Oceanfront',1)<>0,'Oceanfront',
IIF(InStr(1,[Name],'Overwater',1)<>0,'Overwater,
IIF(InStr(1,[Name],'Slope side',1)<>0,'Slope side',
IIF(InStr(1,[Name],'Tower',1)<>0,'Tower,'Delete'
)))))))))))))))

我有10万条记录,我不想使用记录集,因为它已经花了太长时间,我已经尝试过了。我必须进行许多内部联接,并且我的数据库文件越来越大。

我有什么处理字符串的选择?我在[Name]中存储了一个很长的字符串,它具有一个房间的许多特征。我正试图破译这个名字。

如果我唯一的选择是一个记录集,那么处理嵌套的if或select case会更快些?

感谢您的时间和帮助

sql ms-access access-vba
1个回答
4
投票
关于性能,而不是重复使用iif函数,因为该函数返回有关字符串内子字符串的不必要位置数据,您可能会发现使用update finaldata set [area] = switch ( instr([name],'PoolSide')<>0,'PoolSide', instr([name],'Mountainside')<>0,'Mountainside', instr([name],'Garden Area')<>0,'Garden Area', instr([name],'Ground Floor')<>0,'Ground Floor', instr([name],'Annex Building')<>0,'Annex Building', instr([name],'Beachside')<>0,'Beachside', instr([name],'Beachfront')<>0,'Beachfront', instr([name],'Mountainside')<>0,'Mountainside', instr([name],'Executive')<>0,'Executive Level', instr([name],'Lakeside')<>0,'Lakeside', instr([name],'Mezzanine')<>0,'Mezzanine', instr([name],'Oceanfront')<>0,'Oceanfront', instr([name],'Overwater')<>0,'Overwater', instr([name],'Slope side')<>0,'Slope side', instr([name],'Tower')<>0,'Tower', true,'Delete' ) 运算符的速度更快,例如:

instr

并且鉴于此操作可对整个数据集进行操作,并且在执行时每条记录最多可进行15次比较,因此可以更快地评估16个独立的查询,每个查询具有以下结构:

instr

© www.soinside.com 2019 - 2024. All rights reserved.