想在同一个文本控件输入框,既想输入员工编号,又想输入姓名,且都可以查出结果,SQL怎么写?

image.png

FineReport 帆软用户VQHkSnUE2a 发布于 2025-2-27 15:59
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
华莉星宸Lv7资深互助
发布于2025-2-27 16:01

where 1=1

${if(len(参数)=0,"","and (员工编号 like '%"+参数+"%' or 姓名 like '%"+参数+"%')")}

最佳回答
0
Z4u3z1Lv6专家互助
发布于2025-2-27 16:02

select * from table where 1=1 ${if(len(控件名)==0,"","and (姓名字段 IN ('"+REPLACE(控件名,",","','")+"') or 编号字段 IN ('"+REPLACE(控件名,",","','")+"'))")}

最佳回答
0
CD20160914Lv8专家互助
发布于2025-2-27 16:28

select * from 表名称

where 1=1

and (账号='${INDEXOFARRAY(split(cs,","),1)}' or 名称='${INDEXOFARRAY(split(cs,","),2)}')

image.png

最佳回答
0
lht0012002Lv3见习互助
发布于2025-2-27 17:05

可以在数据集中把两列数据合并成新的列,然后在这个列中用sql 的 like条件来查

最佳回答
0
小陈PhLv3初级互助
发布于2025-2-27 17:49

在帆软FineReport中,如果你希望在一个文本控件输入框中既能输入员工编号(例如:员工ID),又能输入姓名,并且都能查出相应的结果,你可以使用SQL中的OR条件来实现。假设你的员工信息表名为Employee,包含两个字段:EmployeeID(员工编号)和Name(姓名),你可以编写如下的SQL查询语句:

sql

复制代码

SELECT * 

FROM Employee 

WHERE EmployeeID = :inputValue OR Name = :inputValue;

在这个SQL语句中,:inputValue是一个参数占位符,代表从文本控件输入框中获取的值。FineReport在执行这个SQL语句时,会将用户输入的值替换到:inputValue的位置。

步骤说明:

创建参数:

在FineReport的设计器中,确保你已经创建了一个参数来接收文本控件输入框的值。这个参数可以命名为inputValue。

编写SQL:

在数据集(Dataset)的SQL查询中,使用上面的SQL语句,并将参数占位符:inputValue替换为FineReport的参数表示方法(通常是${参数名},但在SQL查询中直接使用:参数名也是常见的)。

绑定参数:

确保在FineReport中将文本控件输入框的值绑定到你创建的参数inputValue上。

测试:

运行报表,并在文本控件中输入员工编号或姓名,查看是否能够正确查询并显示结果。

注意事项:

性能考虑:如果Employee表的数据量很大,使用OR条件可能会导致查询性能下降。在这种情况下,可以考虑使用索引优化查询,或者根据业务逻辑进行更复杂的查询优化。

输入验证:为了提升用户体验和查询准确性,可以在前端对输入值进行验证,确保用户输入的是有效的员工编号或姓名。

安全性:确保SQL查询语句能够防止SQL注入攻击。FineReport通常会对参数值进行转义处理,但开发者仍需注意SQL语句的安全性。

通过上述方法,你就可以在同一个文本控件输入框中既输入员工编号又输入姓名,并都能查出相应的结果。

  • 5关注人数
  • 33浏览人数
  • 最后回答于:2025-2-27 17:49
    请选择关闭问题的原因
    确定 取消
    返回顶部