2

我正在尝试构建一个动态查询。

这很好用:

$qstring="10000, 10001, 10003, 10005";

SELECT *
FROM orders
WHERE order_id in ($qstring);

当我没有要匹配和选择的数据时,这也可以正常工作。

$qstring="";

SELECT *
FROM orders
WHERE order_id in ($qstring);

是否存在类似下面的内容来匹配任何数据?我检查了 SQL 的模式匹配,但没有找到可以匹配所有内容的内容。

$qstring="*";

SELECT *
FROM orders
WHERE order_id in ($qstring);

有什么提示吗?谢谢!

4

3 回答 3

3

因此,您需要进行查询:

SELECT *
FROM orders
WHERE order_id in ($qstring);

如果参数中没有传递任何值,则可以正常工作@qstring。在这种情况下,试试这个:

SELECT * FROM orders 
WHERE ($qstring <> '*' AND order_id in ($qstring));
于 2012-11-06T13:22:39.390 回答
2

如果您想匹配所有内容,只需使用不带 where 子句的 select。

SELECT * FROM orders

如果您被迫(出于某种奇怪的原因使用您描述的构造),那么......

$qstring="SELECT order_id FROM orders";
于 2012-11-06T13:24:02.383 回答
1

如果您需要所有内容,则不应使用 WHERE IN 子句。

检查您的$qstring变量并仅WHERE order_id in ($qstring);在必要时附加

于 2012-11-06T13:21:39.230 回答