sql >> Database teknologi >  >> RDS >> Oracle

Oracle bruger en streng inde i IN tilstand

in bruges sammen med collections , så din inputstreng bør først konverteres til collection (ved at opdele i rækker, baseret på kommaafgrænser)

Prøv noget som dette

Select * from employ where id = 12 and org_id in (
SELECT decode(:input_id,null,  (select  employ.org_id from dual) 
,TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)) )  
    FROM (SELECT  :input_id temp FROM DUAL)
    CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+')
    )

forresten, dette org_id in () vil returnere true hvis :input_id er null .

En anden tilgang ville være at konstruere hele forespørgslen som en streng først og derefter udføre den enten med execute immediate eller gennem php . Dette kan dog øge sql-injektion bekymringer.



  1. Hvordan søger man JSON-data i MySQL?

  2. MySQL øger brugervariabelen, når værdien ændres

  3. Gå gennem MySQL til venstre, deltag i php vs. 2 separate forespørgsler

  4. Vælg sætning inde i en løkke i en Mysql Stored Procedure