我在ms-access中有一个简单的查询,它将两个文本字段合并为一个:
SELECT AllNames.Name, AllNames.Authority, [Name] & " " & [Authority] AS Expr1
FROM AllNames;
查询结果并不完全符合我的预期,因为表达式列会在结果字符串中追加一个额外的字符\ 0:
Name Authority Expr1
Acrophorus dissectus Ching & S. H. Wu Acrophorus dissectus Ching & S. H. Wu\0
Acrophorus emeiensis Ching Acrophorus emeiensis Ching\0
Acrophorus exstipellatus Ching & S. H. Wu Acrophorus exstipellatus Ching & S. H. Wu\0
有趣的是AllNames是一个链表。如果我在拥有AllTables的数据库中运行相同的查询,则不会附加空字符。
在表达式周围添加Trim()或用&doesn帮助替换&符号。
已扫描AllNames中的所有文本字段以查找空字符,并在必要时进行清除。每当我使用它时,我都可以对查询结果做同样的事情,但我不是因为这是我需要速度的地方。
是否有任何解决此问题的方法,或者是向AllNames添加冗余字段的唯一解决方案(并且存在与数据完整性相关的风险)?
MSAccess 2003 Windows Server 2003/64
修改 场长会发生什么变化?如果我改为查询
select [Name], Len([Name]) As N_Len,
[Authority], Len([Authority]) As A_Len,
[Name] & " " & [Authority] As Expr1, Len([Name] & " " & [Authority]) As E1_Len
From AllNames
然后结果是
Name N_Len Authority A_Len Expr1 E1_Len
(no name) 9 (no name) 10
Pteridophyta 12 Schimper 8 Pteridophyta Schimper 21
Acrophorus diacalpioides 24 Ching & S. H. Wu 17 Acrophorus diacalpioides Ching & S. H. Wu 42
Acrophorus dissectus 20 Ching & S. H. Wu 17 Acrophorus dissectus Ching & S. H. Wu 38
Acrophorus emeiensis 20 Ching 6 Acrophorus emeiensis Ching 27
那么空字符真的存在吗?不是因为我们相信字段长度(len(name)+ len(author)+ 1之间的空间)。但是,我在pyodbc中使用Python中的查询(不是那种不涉及链接表的其他查询,或者使用自己数据库中的相同表)。当光标位于文本后面时,它也显示在Access的GUI中: