2012-11-06 54 views
2

我正在嘗試構建動態查詢。SQL:與任何內容匹配IN運算符

這工作得很好:

$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); 

任何提示?謝謝!

回答

2

如果要匹配所有內容,只需使用不帶where子句的select。

SELECT * FROM orders 

如果你被迫(一些奇怪的原因使用您所描述的結構),然後...

$qstring="SELECT order_id FROM orders"; 
+0

很好用......謝謝你! – user1263746

1

如果你需要的一切,你不應該有條款A WHERE。

檢查$qstring變量,僅追加WHERE order_id in ($qstring);時neccessary

+0

我知道......不過這正好與構建動態查詢的問題。我有$ qstring的控制,但不是查詢語句的控制。 – user1263746

3

所以,你需要讓你的查詢:

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

作品的情況下,也沒有在@qstring參數傳遞的值的罰款。在這種情況下,請改爲:

SELECT * FROM orders 
WHERE ($qstring <> '*' AND order_id in ($qstring)); 
+1

'$ qstring'<>'*',否則SQL將不會運行,這是PHP變量剛剛被插入TSQL字符串的權利? –

+0

你能向我解釋一下嗎?這是如何工作的? – user1263746