2011-02-23 1 views
0

Comment faire un WHERE COLUMN LIKE '%SearchTerm%' avec les bibliothèques DevArt dotConnect for Oracle?DevArt dotConnect for Oracle - comment faire une clause WHERE LIKE avec un paramètre?

Idéalement en utilisant un CommandParameter pour le SearchTerm?


J'ai essayé ce qui suit sans joie:

cmd.CommandText = 
    "SELECT ID, COLUMN_A, COLUMN_B FROM TABLE_A 
    WHERE COLUMN_A LIKE :SearchTerm"; 


Je l'ai travailler avec:

cmd.CommandText = 
    "SELECT ID, COLUMN_A, COLUMN_B FROM TABLE_A 
    WHERE COLUMN_A LIKE :SearchTerm"; 

cmd.Parameters.AddWithValue("SearchTerm", "%" + term.Replace('%', ' ') + "%"); 


Mais je suis pas heureux d'entourer le terme avec % signes - existe-t-il un moyen correct ou meilleur?

Répondre

2

Essayez cette solution:

cmd.CommandText = 
    "SELECT ID, COLUMN_A, COLUMN_B 
    FROM TABLE_A 
    WHERE COLUMN_A LIKE '%' || :SearchTerm || '%'"; 

cmd.Parameters.AddWithValue("SearchTerm", term); 
2

Oracle lui-même n'aime pas "Où colonne LIKE%: searchterm%", donc si vous avez besoin des caractères génériques, alors ils doivent être ajoutés dans le cadre du paramètre.

Vous pouvez l'éviter en définissant un full text index sur la colonne que vous souhaitez rechercher, puis utiliser plutôt CONTAINS, qui ne nécessite pas les caractères génériques. C'est aussi une méthode de recherche plus puissante, mais plus complexe à mettre en place.

+0

va de même pour la plupart des pilotes ADO. '%' devrait toujours être dans le paramètre. – jgauffin

Questions connexes