Postgresql Postgres:check文本数组在select语句的where子句中具有可强制转换为域类型的元素
假设我已经定义了带有检查约束的域,并且我有以下查询:Postgresql Postgres:check文本数组在select语句的where子句中具有可强制转换为域类型的元素,postgresql,Postgresql,假设我已经定义了带有检查约束的域,并且我有以下查询: SELECT pm.name, ps.name, pm.id, ps.id FROM pylon_modules pm INNER JOIN pylon_symbols ps ON pm.id = ps.module_id WHERE pm.name in ('Test','test') and ps.name in ('bang'); where子句中使用的符号最简单的转换方式是什么?我需要断言它们与域类型
SELECT pm.name, ps.name, pm.id, ps.id
FROM
pylon_modules pm
INNER JOIN
pylon_symbols ps ON pm.id = ps.module_id
WHERE pm.name in ('Test','test') and ps.name in ('bang');
where子句中使用的符号最简单的转换方式是什么?我需要断言它们与域类型匹配
上面的“测试”不是有效的模块名称
我可以设置一个存储过程,但查询太简单了,我宁愿准备它
如果使用存储过程,是否必须创建域类型的数组版本
有,但它要求强制转换目标为数组类型 以下操作可以实现此目的,域约束冲突将触发错误:
创建或替换函数解析_符号(模块文本[],符号文本[])
返回表(
moduleName VARCHAR(16),
symbolName VARCHAR(16),
moduleId INT,
符号整数
)作为$body$
选择pm.name、ps.name、pm.id、ps.id
来自塔架模块pm
pm.id=ps.module\u id上的内部连接塔架符号ps
其中pm.name(选择unest(模块)::public.module_name)和
ps.name IN(选择unnest(符号)::public.element\u name)
$body$LANGUAGE-sql;