过滤条件中如何查新名称时也能查到旧名称的数据,查旧名称时也能查书新名称的数据

image.png如图所示加了一个文本控件用于筛选数据,假如李明原来的名字叫李华,如何使得查询人员姓名为李华时也能显示李明的数据,查李明时也能显示李华的数据。sql中应该怎么写,谢谢各位大佬。目前是这么写的,${if(len(查询人员姓名) == 0,"","and t.username LIKE '%" + 查询人员姓名 + "%'")} ,两个名字都在t.username列存着。

FineReport PAuQ5bvl 发布于 2024-8-5 15:23 (编辑于 2024-8-5 15:30)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
华莉星宸Lv7专家互助
发布于2024-8-5 15:27

主要看你数据的旧名称和新名称是怎么存储的

数据表里面是两个字段还是一个字段?

  • PAuQ5bvl PAuQ5bvl(提问者) 我更新了问题,麻烦您看下。
    2024-08-05 15:30 
  • 华莉星宸 华莉星宸 回复 PAuQ5bvl(提问者) 新名称和旧名称还一个关系表吧,不然没法判断
    2024-08-05 15:31 
  • PAuQ5bvl PAuQ5bvl(提问者) 回复 华莉星宸 建了一个关系表dy,这个如何写sql啊
    2024-08-05 15:40 
  • 华莉星宸 华莉星宸 回复 PAuQ5bvl(提问者) select * from (select a.新名称, b.旧名称 from tb a left join dy b on a.新名称 = b.新名称) where 新名称 = '李华' or 旧名称 = '李华'
    2024-08-05 15:47 
  • PAuQ5bvl PAuQ5bvl(提问者) 回复 华莉星宸 是要在筛选条件里写呢 where 1=1 ${if(len(查询人员姓名) == 0,"","and t.username LIKE '%" + 查询人员姓名 + "%'")}这个怎么修改呢
    2024-08-05 15:57 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2024-8-5 15:28

SELECT * FROM TABLE WHERE 姓名字段 ='李华' or 曾用名字段='李华'

最佳回答
0
ID1208Lv6高级互助
发布于2024-8-5 15:29

李明和李华应该只是name不一样,code应该一样的,可以用名字转化一下,sql里面转换成code字段查询

  • PAuQ5bvl PAuQ5bvl(提问者) 我更新了问题,麻烦您看下。
    2024-08-05 15:31 
  • ID1208 ID1208 回复 PAuQ5bvl(提问者) 李明和李华应该是有个字段关联起来的,不然你怎么知道李明原来叫李华?用这个关联字段来查询
    2024-08-05 15:38 
  • PAuQ5bvl PAuQ5bvl(提问者) 回复 ID1208 我新建了一个表dy,里面存着对应关系,想问下sql怎么写
    2024-08-05 15:42 
  • ID1208 ID1208 回复 PAuQ5bvl(提问者) select * from tableA where name =(select name1 from dy where name1='李华') or name =(select name2 from dy where name1='李华') 类似于这样,也可以在子查询中将两个name合成一个字段,然后用in来查询
    2024-08-05 16:04 
  • 3关注人数
  • 144浏览人数
  • 最后回答于:2024-8-5 15:30
    请选择关闭问题的原因
    确定 取消
    返回顶部