gpt4 book ai didi

mysql - 使用准备好的语句从多列进行 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 00:51:48 24 4
gpt4 key购买 nike

我希望能够在 mysql 表的大部分列中搜索并返回结果。我考虑过使用 myisam 数据库和全文搜索,但决定由于性能受到影响,最好坚持使用 innodb。我也曾短暂地考虑过使用 Solr 之类的东西,但在我的情况下,这样的解决方案似乎有点过分了。

我只是想在联系信息数据库中添加搜索功能。当用户输入说“Smith”时,我希望结果返回并显示所有表行,其中名字、姓氏甚至地址包含单词 Smith 等。

请告诉我这是否是错误的方法,但我已经决定使用如下设置的标准 SQL 字符串:

SELECT * FROM contacts WHERE firstName LIKE ? OR lastName LIKE ? OR email LIKE ?

当然,实际的查询字符串会比这个例子长得多,因为它将包含表中的大部分列。

1) 为了安全起见,我更喜欢在查询数据库时使用准备好的语句,但是当我按照上面的方式设置 sql 字符串时,代码会为每个 ? 查找单独的语句。我怎样才能重复同样的“喜欢”?每列?或者有没有一种方法可以将其设置为类似于:

SELECT * FROM contacts WHERE firstName, lastName, email LIKE ?

当我最初将字符串传递给准备语句时,我用通配符 (%) 将其包围。

2) 我可以同时搜索 VARCHAR 和 INT 列吗?

编辑: 我最终使用了 Spring 框架的一小部分,因此我可以使用命名参数。不幸的是 JDBC 没有这个功能。这意味着在我的构建路径中包含一小部分 Spring 框架,以便我可以使用 jdbc jar。或者,我可以为查询字符串中的每个参数传入一个搜索字符串,但这会导致代码难看/难以阅读,而且我不想使用相同的字符串进行修改,这就是我选择使用命名的原因参数。

最佳答案

不,你不能那样做。您需要按照第一个查询中的方式进行操作:

SELECT * FROM contacts WHERE firstName LIKE ? OR lastName LIKE ? OR email LIKE ?

关于mysql - 使用准备好的语句从多列进行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8221278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com