我想检查postgres中的值的类型,如下所示:
@H_502_2@SELECT id,CASE
WHEN val_is_integer THEN (SOME_QUERY)
WHEN val_isnot_integer THEN (ANOTHER_QUERY)
ELSE 0
END
FROM test;
怎么做?
笔记:
该值是表中的varchar类型,在该字段中有值为numeric和varchar …
例:
@H_502_2@ID | value 1 | test 2 | 10 3 | 12 4 | test123解决方法
您的值列总是类型为varchar,您似乎想检查内容是否是数字/整数.
你可以通过创建一个函数来做到这一点.
@H_502_2@create function isdigits(text) returns boolean as ' select $1 ~ ''^(-)?[0-9]+$'' as result ' language sql;(该函数可能通过尝试将文本转换为int或使用int4()函数并捕获发生的错误并返回NULL来实现).
有了这样的功能,你可以做:
@H_502_2@SELECT id,CASE WHEN value IS NULL THEN 0 WHEN isdigits(value) THEN (SOME_QUERY) ELSE (ANOTHER_QUERY) END FROM test;