替换双冒号以在 postgresql 中设置值
The replacement for double colon to set the value in postgresql
with recursive tree_Gy_Department as(
select PreGD.*, 1::integer recursion_level
from GY_DEPARTMENT PreGD
where PreGD.dept_id = :deptId
union all
select NextGD.*, recursion_level +1
from GY_DEPARTMENT NextGD
join tree_Gy_Department treeGD on treeGD.parent_id = NextGD.dept_id)
select recursion_level, a.dept_name,
case
when recursion_level = 1 then REGEXP_replace(initcap(a.DEPT_NAME), '\s', '')
else REGEXP_replace(initcap(a.DEPT_NAME), '[[:lower:]]|\s', '', 'g') END
AS Result
from tree_Gy_Department a;
我正在尝试 运行 此查询,它在 PostgreSQL 的控制台查询中有效,但是当我将它放入存储库时出现错误:错误:“:”处或附近的语法错误。我认为错误发生在我设置 recursion_level "1::level recursion_level" 的值时,可能与 hibernate 冲突。有人有这个双冒号的替代品吗?谢谢。
改用标准 cast()
语法。休眠被 ::
搞糊涂了
cast(1 as integer) as recursion_level
但我认为您根本不需要演员表。一个简单的 1 as recursion_level
也可以。
with recursive tree_Gy_Department as(
select PreGD.*, 1::integer recursion_level
from GY_DEPARTMENT PreGD
where PreGD.dept_id = :deptId
union all
select NextGD.*, recursion_level +1
from GY_DEPARTMENT NextGD
join tree_Gy_Department treeGD on treeGD.parent_id = NextGD.dept_id)
select recursion_level, a.dept_name,
case
when recursion_level = 1 then REGEXP_replace(initcap(a.DEPT_NAME), '\s', '')
else REGEXP_replace(initcap(a.DEPT_NAME), '[[:lower:]]|\s', '', 'g') END
AS Result
from tree_Gy_Department a;
我正在尝试 运行 此查询,它在 PostgreSQL 的控制台查询中有效,但是当我将它放入存储库时出现错误:错误:“:”处或附近的语法错误。我认为错误发生在我设置 recursion_level "1::level recursion_level" 的值时,可能与 hibernate 冲突。有人有这个双冒号的替代品吗?谢谢。
改用标准 cast()
语法。休眠被 ::
cast(1 as integer) as recursion_level
但我认为您根本不需要演员表。一个简单的 1 as recursion_level
也可以。