如何使用SQL验证字段中的数据是否属于特定的数据类型?

如何使用SQL验证字段中的数据是否属于特定的数据类型?,sql,postgresql,Sql,Postgresql,我需要从Postgres服务器上提取一大块数据。在执行此操作之前,我希望确保我提取的数据具有正确的类型(可以是文本或二进制) 因此,我需要通过SQL查询查看服务器上的数据,如果类型正确,则返回true,否则返回false。(使用SQL进行查看还可以确保服务器实际上已准备好处理查询) 但是,经过长时间的尝试,我就是无法弄清楚如何为此编写SQL查询 这在很大程度上取决于你遗漏的细节。通常,应用程序会提前知道它要查询的字段的数据类型。如果没有,可能有各种各样的原因,适当的选择取决于原因 选择包括:

我需要从Postgres服务器上提取一大块数据。在执行此操作之前,我希望确保我提取的数据具有正确的类型(可以是文本或二进制)

因此,我需要通过SQL查询查看服务器上的数据,如果类型正确,则返回true,否则返回false。(使用SQL进行查看还可以确保服务器实际上已准备好处理查询)


但是,经过长时间的尝试,我就是无法弄清楚如何为此编写SQL查询

这在很大程度上取决于你遗漏的细节。通常,应用程序会提前知道它要查询的字段的数据类型。如果没有,可能有各种各样的原因,适当的选择取决于原因

选择包括:

  • 如果您知道模式、表和列名,请在中查找,例如

    这适用于大多数数据库,它不是特定于PostgreSQL的

  • 一些客户端驱动程序公开数据库和/或查询元数据—例如,在PgJDBC中,您可以获取有关数据库的信息,甚至可以获取特定查询。同样,这不是特定于PostgreSQL的

  • 如果您只有SQL查询,并且正在使用低级驱动程序,如
    libpq
    ,请发送
    descripe
    协议消息。服务器将回复数据类型和大小。您不能在SQL级别执行此操作,只能在协议级别执行此操作

  • 您可以使用
    pg_typeof
    函数获取特定标量值的类型


给定表上的给定查询将始终返回相同的类型。那么这里的变量是什么?
select data_type, is_nullable 
from information_schema.columns
where table_schema = 'public' and table_name = 'test' and column_name = 'f';