我有一个查询如下。如果在表中找不到密钥,我希望SQL返回空格。
从table_A中选择*,其中键入(1,2,3,4)
Output:
1 x y
2 a b
'' '' ''
4 ds c
假设table_A有3列,而键3记录在表
中答案 0 :(得分:1)
您应该使用NULL值代替空字符串,以确保类型安全。 NULL表示与空字符串或零相比,没有值存在,而空字符串或零仍然是某种类型的值。 如果你想使用空字符串,你必须将键转换为运行中的字符串 - 不太方便。
获得结果的技巧是创建一个包含所有键的理想键表 - 我在这里使用generate_array从1到最大(键)。然后离开你的桌子吧,瞧:
WITH test AS (SELECT * FROM UNNEST([
STRUCT(1 AS key, 'x' AS col1, 'y' AS col2),
STRUCT(2 AS key, 'a' AS col1, 'b' AS col2),
STRUCT(4 AS key, 'x' AS col1, 'y' AS col2)
])
)
SELECT
test.*
FROM UNNEST(GENERATE_ARRAY(1, (SELECT MAX(key) FROM test))) AS key
LEFT JOIN test USING(key)
给你
如果您想要所有密钥,只需SELECT * FROM ...