J'ai une table (ne) avec ces éléments: et j'utilise cette requête: p> Pourquoi le résultat est: p> et non ceci (cible): p> merci! p> p> p>
4 Réponses :
la fonction substr () code > renvoie null code> lorsque la position de démarrage est supérieure à la longueur de la chaîne, la comparaison de null code> sur '_ a " code> donne mal Résultats.
Ainsi, changez-vous à ceci:
Je changerais <9 code> dans <10 code>. Pour le reste, réponse parfaite
Correct, car la sous-chaîne prend 2 caractères.
Bien mais je voudrais aussi exclure ce: saccalen_a46c0da_cancellare
Il est exclu, vérifiez les résultats
Désolé, je voudrais inclure saccalen_a46c0da_cancellare
Il fonctionne également sans "longueur (NE.node) <9", requête: (longueur (NE.Node) <> '15' ou substrateur (NE.NODE, 9,2) non in ('_a'))
En fait, dans SQL NULL, ni vrai non faux. Dans votre cas, une partie de votre chaîne a une longueur inférieure à 9, alors substrateur (...) renvoie null. Valeur de NULL NON IN (...) est NULL.
Les informations supplémentaires sont disponibles sur Demandez Tom p>
Donc, il suffit de réécrire la condition sur quelque chose comme p>
select ne.NODE
from ne
where nvl(substr(ne.NODE,9,2),'x') not in ('_A')
La raison est que Oracle confond la chaîne vide ( une méthode utiliserait ou ou sûr que la chaîne est suffisamment longue: p> ou vérifiant la longueur ainsi que le patt. p> p> '' ' code>) et null code> valeurs. Donc, la sous-chaîne renvoie null code> - et la plupart des comparaisons renvoient null code> plutôt que false. comme code>: p> regexp_like () code>: p>
Je suppose que
saccalen_a46c0da_cancellare code> ne doit pas être dans les résultats.Votre résultat doit pas b> contenir ces valeurs, non? Parce que tous ont
_a code> à la 9ème position.Oui, mais en dehors de la liste ne doit rester que ceci: lecot113_a42401 TVCCVC16_A46C01 CBCELEN1_A46C01 SPCBA440_A46C02 J'ai mis à jour le résultat
Quelle est la logique derrière cela?
Remettre tout enregistrement avec ce motif: longueur maximale "non 15" et substration de la longueur 9 Longueur 2 non "_a" Donc, à l'extérieur de la liste ne doit rester que cbelen16_a46c01 SPCBA440_A46C01 SPCBA440_A46C02 avec longueur toujours 15 et substrateur 9,2 = _a