带子查询的SQL IN运算符返回false,但应该为true

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

我在Snowflake中有一些数据,我正在使用Web界面来运行一些查询。

我有以下查询:

select * from MY_TABLE
where AIRPORT_CODE in (select IATA from AIRPORT_CODES_TABLE)

这将返回一个空结果。但是,MY_TABLE中的值应该返回。

如果我只是创建以下测试查询,我实际上会得到一些结果:

select * from MY_TABLE
where AIRPORT_CODE in ('YHZ')

所以在MY_TABLE中有明显的行,其值为'YHZ'。而且,YHZ肯定在表AIRPORT_CODES_TABLE,所以原始查询也应该返回一些结果。这是一个AIRPORT_CODES_TABLE的片段:

select IATA from AIRPORT_CODES_TABLE

我在这里错过了什么?我提到the official docs来提出我的疑问,所以它应该是正确的。

sql snowflake-datawarehouse
1个回答
2
投票

只是一个想法,你可以尝试使用Trim功能

SELECT *
FROM MY_TABLE
WHERE Trim(AIRPORT_CODE) IN (
    SELECT Trim(IATA)
    FROM AIRPORT_CODES_TABLE
    )
© www.soinside.com 2019 - 2024. All rights reserved.