recherche

Maison  >  Questions et réponses  >  le corps du texte

Quelle est une alternative à l’opérateur LIKE lors de l’interrogation d’un grand nombre de lignes ?

<p>J'ai une table avec une colonne qui stocke des chaînes aléatoires comme ceci : </p> <pre class="brush:php;toolbar:false;">example_id = qwhs77gt65g7*</pre> <p>Certaines données de la colonne comportent désormais un astérisque (*), tandis que d'autres n'en comportent pas. </p> <p>Je dois sélectionner ceux qui le sont. J'utilise cette requête : </p> <pre class="brush:php;toolbar:false;">SELECT example_id FROM example_tbl WHERE example_id LIKE '%*%'</pre> <p>Maintenant, cela ne poserait normalement pas de problème, mais j'interroge des millions de lignes et d'après ce que je peux dire, l'opérateur LIKE affecte mes performances. La requête prendra plusieurs heures</p> <p>Ma question est la suivante : quelle est l'alternative à l'opérateur LIKE ? </p> <p>PS L'astérisque est toujours à la fin de la chaîne. Je ne sais pas si cela aide</p>
P粉191610580P粉191610580513 Il y a quelques jours532

répondre à tous(1)je répondrai

  • P粉063862561

    P粉0638625612023-09-03 00:00:31

    Puisque vous avez mentionné "l'astérisque est toujours à la fin" alors vous pouvez essayer

    其中 example_id LIKE '%*'.

    Cela trouvera n'importe quelle valeur se terminant par "*"

    ou

    consiste à rechercher une sous-chaîne dans une colonne d'un tableau.

    Une façon d'y parvenir est d'utiliser la fonction instr(), qui prend 3 paramètres.

    Syntaxe : instr(rank, string, sub_string)

    Classement :

    1. Expression entière, donnant la première position correspondante La recherche de sous-chaîne commence par le caractère de la chaîne.
    2. String : String est votre texte.
    3. sub_string : la sous-chaîne que vous recherchez À la recherche de. Si instr() n'est pas trouvé, renvoie 0 correspondre.

    Maintenant, comment appliquer cela à la table ? Puisque la fonction instr() est x3, elle est simple à appliquer.

    Exemple : filtre[ZCT] où instr(1,ALLOTEDTO,"Ram") <> 0.

    Où 1 est la position de départ pour trouver la sous-chaîne, ALLOTEDTO est le nom de la colonne composée de chaînes et le dernier paramètre est la sous-chaîne elle-même. Cela vous donnera tous les enregistrements de la table où la colonne ALLOTEDTO contient la sous-chaîne "Ram"

    C'est équivalent à.

    Sélectionnez * dans ZCT où ALLOTEDTO est similaire à "%Ram%".

    Remarque : La fonction Instr() est sensible à la casse, utilisez donc toujours les fonctions majuscules ou minuscules.

    répondre
    0
  • Annulerrépondre