gpt4 book ai didi

mysql - 如何在 MySQL 中搜索多个完整值和部分值?

转载 作者:行者123 更新时间:2023-11-29 05:34:13 25 4
gpt4 key购买 nike

我正在运行一个在 Coldfusion8/MySQL 5.0.88 数据库上运行的应用程序。

该应用有一个搜索表单,用户可以使用该表单搜索产品 ID。

现在我的 SQL 语句如下所示:

  ...
AND a.product_id LIKE <cfqueryparam value="%#form.s_product_id#%" cfsqltype="cf_sql_varchar">

用户通常会传入一个单个 id部分 id,所以我需要它对两者都有效:

   123456 (full id)
123 (partial id)

不过,我也想让用户能够搜索多个ID。所以用户可能会输入:

   12345,233345,78876

问题:
我可以在提交表单之前清除空格,但是我该怎么做才能使我的 MySQL 搜索处理程序正确地将其识别为列表。如果我只使用 IN 而不是 LIKE 我会丢失 partial_ID,不是吗?

最佳答案

因此,一个有效的 ColdFusion 解决方案可能是:

    <cfquery name="your_query_name" datasource="your_datasource">
SELECT column1, column2
FROM a
WHERE condition=whatever
<cfif listlen(form.s_product_id)>
AND (1=0 /* always false; for SQL syntax only */
<cfloop list="#form.s_product_id#" index="variables.s_product_id_ii">
OR a.product_id LIKE <cfqueryparam value="%#variables.s_product_id_ii#%" cfsqltype="cf_sql_varchar" />
</cfloop>)
</cfif>
</cfquery>

如果 'a.product_id' 是整数字段,请考虑将其转换为 VARCHAR

    CAST(a.product_id AS VARCHAR(50)) LIKE <cfqueryparam...

所以这个查询不会在不同的、更严格的数据库上中断。或者,由于您将 form.s_product_id 列表拆分为其组件整数,您可以将 cfqueryparam cfsqltype 更改为“cf_sql_integer”。

关于mysql - 如何在 MySQL 中搜索多个完整值和部分值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12068597/

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