where 后面接replace为啥查不出数据呀

ZQJ_JAVA 2023-05-15 17:00:39

select 
sjmc,
jsdw,
ssdw,
htrq,
sjtjrq,
sjjsgq,
xmjl,
sjjj,
(case when sjjd = 1 then '决策阶段' 
      when sjjd = 2 then '实施阶段'
      when sjjd = 3 then '使用阶段' else '' end) as sjjdmc,
sjjd
from public.case_constructimpl
where sjjd in(
replace(replace(replace('["1","2"]','[',''),']',''), '"','''')
)

而 where sjjd in ('1','2') 就可以查出来 用的Gauss数据库

...全文
138 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
大然然 2023-05-17
  • 打赏
  • 举报
回复 1

和数据库没什么关系,where sjjd in ('1','2') 能查出来是因为那个两个字符串,用逗号隔开了,
replace(replace(replace('["1","2"]','[',''),']',''), '"','''') 的结果是一个字符串,字符串里有一个逗号,
伪代码解释的话就是 select ...... from public.case_constructimpl where sjjd in ( “ '1','2' “), 但你数据库里显然没有sjjd为 '1','2' 的数据

赵4老师 2023-05-16
  • 打赏
  • 举报
回复

学习存储过程以及动态存储过程正当时

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧