首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UNION查询创建奇怪的字符

UNION查询创建奇怪的字符
EN

Stack Overflow用户
提问于 2015-04-03 13:34:32
回答 3查看 669关注 0票数 0

在Access应用程序中,我使用UNION连接了两个结果集。这个方法工作了很多年,但现在它停止工作了,因为在合并后,一个文本字段只显示一些粗俗的汉字。

这是设置:

代码语言:javascript
复制
1. select id,fieldA,1 as fieldB from tableA where cond=1
2. select id,"" as fieldA,2 as fieldB from tableA where cond=0

这些查询分别显示正确的结果。但在我加入他们之后

代码语言:javascript
复制
select * from subquery1 UNION select * from subquery2

来自fieldA的数据只是一些汉字,比如㼄W。我不知道这是从哪里来的。

经过一些尝试后,我发现以下查询显示了正确的结果:

代码语言:javascript
复制
select * from subquery1 where id=1 UNION select * from subquery2 where id=1

一个很好的副作用是性能的提高,尽管每次我都要更改querydef。,但是为什么这个和旧版本停止工作呢?

EN

回答 3

Stack Overflow用户

发布于 2015-04-03 15:27:25

与其显示空字符串"",不如尝试添加Null

代码语言:javascript
复制
SELECT id, fieldA, 1 as fieldB FROM tableA WHERE cond=1
UNION SELECT id,Null as fieldA,2 as fieldB FROM tableA where cond=0;
票数 1
EN

Stack Overflow用户

发布于 2020-11-16 15:02:19

关于信息,我简单地通过使用UNION ALL解决了一个类似的问题,其附带好处是性能得到了改善。

票数 1
EN

Stack Overflow用户

发布于 2022-05-07 22:26:26

问题是Access使用联合查询中的第一个SELECT语句中的类型来确定查询中字段的类型。如果在这个第一个select块中使用一个null值,它就不知道要使用什么类型,并且搞砸了。最简单的解决方案是重新排序查询中的select块,以便第一个查询不包含空项。或者,最常用的解决方案是创建一个空表,其中包含您所需的每种类型的一个字段,但表中没有数据:-

代码语言:javascript
复制
Null Values Table
Field Name             Data Type
Null Id                AutoNumbered
Null Int               Number
Null Currency          Currency
Null Date              Date/time
Null Text              Short Text

然后在使用此空表的条目的第一个实块之前合并一个虚拟选择块:-

代码语言:javascript
复制
SELECT 
    [Null Date] AS [Date],
    [Null Id] AS [Index],
    [Null Text] AS [Description],
    [Null Currency] AS [Income Tax],
    [Null Currency] AS [Employers NI],
    [Null Currency] AS [Employees NI],
    [Null Currency] AS [Amounts Due],
    [Null Currency] AS [Payments],
    [Null Currency] AS [Balance]
FROM [Null Values Table];
UNION SELECT 
    [Date],
    Int(Null) AS [Index],
    "Salary" AS [Description],
    [Income Tax],
    [Employers NI],
    [Employees NI],
    [Income Tax] + [Employers NI] + [Employees NI] AS [Amounts Due],
    Int(Null) AS [Payments],
    [Income Tax] + [Employers NI] + [Employees NI] AS [Balance]
FROM [Salaries Table];
UNION SELECT ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29433245

复制
相关文章

相似问题

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