Postgresql:基于变量类型构建查询

时间:2021-05-21 10:57:38

标签: postgresql grafana

我想知道是否可以根据输入类型构建查询。使用 ${textbox} 调用查询,一个字符串(来自 grafana 文本框)。 foo.maca 是 macaddr 类型。
用户应该能够输入 mac 地址、sernum(字符串)或十进制的十六进制表示(例如 48D)。
这是我到目前为止所得到的:

SELECT 
  *
FROM 
  foo
WHERE 
    CASE pg_typeof('${textbox}'::macaddr)=macaddr THEN maca='${textbox}'::macaddr 
    CASE pg_typeof('${textbox}'::text)=text THEN LOWER(sernum)=LOWER('${textbox}')
    CASE pg_typeof(x'${textbox}'::int)=integer THEN id=x'${textbox}'::bigint
;

(此代码无效。)
这个想法是让 postgres 确定输入字符串的类型并从那里构建 where 子句。

编辑:我该怎么做才能使以下语句返回 foo

SELECT CASE WHEN pg_typeof('XY1234'::text)='text' THEN 'foo' ELSE 'bar' END;

您有什么想法或指向正确方向的指针吗?

0 个答案:

没有答案