2012-11-06 3 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를 사용하십시오. 당신은 ... 다음 (당신이 설명 된 구문을 사용하는 몇 가지 이상한 이유로)

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

위대한 작품 ... 고마워요! – user1263746

1

모든 것이 필요한 경우에는 WHERE 절이 없어야합니다.

$qstring 변수를 확인 켜지지

+0

을 강제하는 경우

SELECT * FROM orders 

나는 알고 ...하지만 정확히 동적 쿼리 작성의 문제입니다. $ qstring을 제어 할 수 있지만 쿼리 문은 제어 할 수 없습니다. – user1263746

3

그래서, 당신이 당신의 쿼리해야하는 경우에만 WHERE order_id in ($qstring);를 추가하십시오 @qstring 매개 변수에 전달 아무 값도 없었다 경우

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

작품 벌금을. 이 경우 대신 다음을 시도하십시오.

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

'$ qstring'<> '*'또는 SQL이 실행되지 않습니다. PHP가 TSQL 문자열에 바로 삽입되는 것입니까? –

+0

조금 설명해 주시겠습니까? 어떻게 작동합니까? – user1263746

관련 문제