我正在尝试编写一个查询来判断表中命名的列s
是否a.t
具有其默认值(这是一个非常大的 base64 字符串)。所以我尝试了:
SELECT 1 FROM a.t WHERE s = (
SELECT column_default FROM information_schema.columns
WHERE (table_schema, table_name, column_name) = ('a', 't', 's'))
AND uname = 'joe';
哪个不起作用,所以我注意到结果中information_schema.columns
有一些常规查询没有的东西:
SELECT column_default FROM information_schema.columns
WHERE (table_schema, table_name, column_name) = ('a', 't', 's');
column_default | 'data:image/png;base64,iVBO...QmCC'::text
比。
SELECT s FROM a.t WHERE uname = 'joe';
s | data:image/png;base64,iVBO...QmCC
请注意缺少引号和明确的演员表。
这就是不匹配的原因吗?列s
定义为 type text
。
如何更改查询,以便测试列值与其默认值之间的相等性?