Instruction SELECT substr dans la Clause where

J'ai ici, exemple de tableau avec trois champs.

TableA

    FieldA        FieldB        FieldC
    ======================================
    123XYZ456     XYZ           John
    124NNN333     NNN           Jenny
    232XPT124     XPT           Jade
    456XXX345     XXX           James

FieldA a un ngth de 9. Je n'ai pas la conception de cette table et quelques applications sont déjà à l'utiliser.

Je veux choisir FieldB et FieldC avec des conditions de contre FieldA.

À l'aide de cette instruction sql:

SELECT FieldB, 
       FieldC
FROM   TableA
WHERE  FieldA LIKE Concat(@paramA, '%', @paramB) 

Je ne peux pas obtenir mon résultat souhaité. Lorsque j'essaie de recherche avec paramA valeur de 12 et paramB valeur de '', je reçois le 2 résultats:

    FieldA        FieldB        FieldC
    ======================================
    123XXX456     XXX           John
    124XXX333     XXX           Jenny

parce qu'évidemment il correspond 12% et ce n'est pas ce que je veux. Je veux que les paramètres doivent correspondre à l'index correct de la chaîne.

Si je recherche pour paramA = '12' et paramB = '' alors il ne doit avoir aucun résultat. Pour obtenir les champs (FieldB, FieldC), j'ai besoin de corriger les valeurs de paramA = '123' et paramB = '456' de sorte qu'il sera de retour XYZ et John. Si je veux retourner James puis-je donner paramA = '456' et paramB = '345'

Comment pourrais-je construire correctement une Instruction SQL pour cela? Une idée? Merci.

ur concerne essentiellement les abt 3 premiers et les 3 derniers caractères à droite?
Exactement! C'est ce que je voulais.

OriginalL'auteur John Woo | 2012-03-09