gpt4 book ai didi

php - 查询。如果列 = 特定值,则返回所有

转载 作者:行者123 更新时间:2023-11-29 03:36:53 25 4
gpt4 key购买 nike

我有一个关于我在 PHP 项目中使用的 SQL 查询的小问题,更准确地说是我的 Where 语句。

假设我有一个名为 tab 的表。该表有 3 列:id、name 和 position。 name 是一个 varchar,position 是一个 int。

我想要做的是找到表中列的值等于变量值的所有行(我们称它们为 $name 和 $pos)。所以通常我会简单地做这样的事情:

private function getSqlQuery($name, $pos){
return "SELECT *
FROM tab
WHERE name LIKE '%" . $name . "%'
AND position = " . $pos;
}

澄清一下,变量 $pos 不是严格意义上的整数,可以是字符或字符串,我可以控制在参数中发送的值。

现在我需要做的是:这个查询必须能够返回满足第一个条件 (name = $name) 的每一行,无论位置的值如何。

我也不能使用多个 SQL 查询,我不会详细说明原因,因为它会花费太长时间,但我不能调用 2 个不同的查询。我只能修改参数($name 和 $pos)的值。

我需要找到某种通配符,一个发送到 $pos 的值,这样它就会返回任何东西。使用 LIKE '%%' 作为名称是可行的,但我还没有找到一个用于 int 值的。

我为我糟糕的英语道歉。

最佳答案

我从来没有用过这样的东西,但理论上我认为它可以工作:

您可以在 $var 中传递一个特定的字符串,并在 WHERE 子句中使用 CASE 检查它。如果是那个字符串,您将位置与位置进行比较,这会为您提供第一次验证的结果:

 SELECT *
FROM tab
WHERE name LIKE '%" . $name . "%'
AND position = CASE WHEN " .$var. " = 'IGNORE' THEN position ELSE " .$var. "END;

关于php - 查询。如果列 = 特定值,则返回所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20306850/

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