雪花:是不是有一个查询会返回我在创建表时设置的数据类型? int 到 int,而不是 int 到数字?
Posted
技术标签:
【中文标题】雪花:是不是有一个查询会返回我在创建表时设置的数据类型? int 到 int,而不是 int 到数字?【英文标题】:Snowflake: Is there a query that will return data type as I set it when creating Table? int to int, not int to number?雪花:是否有一个查询会返回我在创建表时设置的数据类型? int 到 int,而不是 int 到数字? 【发布时间】:2021-12-03 07:10:51 【问题描述】:例如
create table dbdt (
ID int,
Name varchar(255));
当我查询时:
select * from dbName.information_schema.columns
where table_schema = 'schemaName' and table_name = 'dbdt'
结果:
COLUMN_NAME | DATA_TYPE |
---|---|
ID | NUMBER |
NAME | TEXT |
我需要在查询中进行哪些更改才能返回创建表时设置的INT
和VARCHAR(255)
?
【问题讨论】:
但是没有INT
,只有NUMBER
,而VARCHAR(255) 也同样意味着更少。如果您有一些工具需要认为有意义,请使用 REGEX 之类的工具为您进行字符串交换。
我可以知道您提出请求的原因是什么吗?有什么用例吗?这可能有助于找到替代方案。
【参考方案1】:
据我所知,您无法获得这些值,因为它们会为未来的操作进行标准化,包括 get_ddl
。
一种选择是转到查询历史记录以查找并解析 create 语句:
https://docs.snowflake.com/en/sql-reference/account-usage/query_history.html(1 年) https://docs.snowflake.com/en/sql-reference/functions/query_history.html(7 天)我试图重现这个问题,结果为空,因为表的基础名称是全大写:
select * from information_schema.columns where table_name = 'DBDT'
数据类型也已标准化:
select column_name, ordinal_position, data_type, character_maximum_length, numeric_precision
from information_schema.columns
where table_name = 'DBDT
get_schema
允许使用大写字母,但它仍然规范化类型:
select get_ddl('table', 'dbdt')
【讨论】:
以上是关于雪花:是不是有一个查询会返回我在创建表时设置的数据类型? int 到 int,而不是 int 到数字?的主要内容,如果未能解决你的问题,请参考以下文章