我想检查postgres中的值类型,如下所示:
SELECT id,
CASE
WHEN val_is_integer THEN (SOME_QUERY)
WHEN val_isnot_integer THEN (ANOTHER_QUERY)
ELSE 0
END
FROM test;
如何做到这一点?
注意:该值是varchar类型在表中,并在该字段中有值是数字和varchar ...
例如:
ID | value
1 | test
2 | 10
3 | 12
4 | test123
3条答案
按热度按时间erhoui1w1#
如果有人想知道如何获取变量的数据类型(* 不是列 *),你可以使用
pg_typeof(any)
函数。简单
或
备注
pg_typeof(varchar_column)将返回字符变化,与列的内容无关。任何列或变量都已经被类型化,pg_typeof将返回声明的类型。它不会根据该列(或变量)的值找到“最佳拟合”类型。-- * 引用a_horse_with_no_name的评论。*
jm81lzqq2#
你的值列总是varchar类型,似乎你想检查内容是否是数字/整数。
你可以通过创建一个函数来实现,例如
(That可以通过尝试将文本转换为int来实现函数,或者使用int 4()函数并捕获发生的错误并返回NULL。
有了这样的函数,你可以做:
dldeef673#
对于postgres DB,您可以使用以下查询获取所有类型及其枚举值-