Quel est le meilleur moyen de rechercher le type de données Long dans une base de données Oracle?
Je travaille avec une base de données Oracle qui stocke HTML comme un type de données Long. Je voudrais interroger la base de données pour rechercher une chaîne de caractères dans le code HTML de données stockées dans le Long terme.
J'ai essayé, "select * from TABLE where COLONNE like '%forme%'". Cette cause d'erreur suivants Oracle parce que "j'aime" n'est pas pris en charge pour les types de données Long.
ORA-00932: incompatible types de données: NOMBRE attendu ai LONGTEMPS
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas rechercher Aspire directement. La nostalgie ne peut pas apparaître dans la clause where. Ils peuvent apparaître dans la liste de sélection si de sorte que vous pouvez l'utiliser pour réduire le nombre de lignes que vous avez à examiner.
Oracle a recommandé la conversion Aspire à CLOBs pour au moins les 2 dernières versions. Il y a moins de restrictions sur la CLOBs.
Vous pouvez utiliser cet exemple sans l'aide de la table temporaire:
Bien sûr, il y a un problème si LONG a plus de 32K caractères.
Exemple:
Mais soyez prudent. Une fonction PL/SQL recherche seulement la première 32K de LONG.
Ne pas utiliser de LONGs, utilisez CLOB à la place. Vous pouvez indexer et de rechercher CLOBs comme VARCHAR2.
En outre, l'interrogation avec un caractère générique(%) entraînera TOUJOURS une table complète-scan. Regarder dans Oracle index de Texte à la place.
D'abord convertir
LONG
colonne type deCLOB
type d'utilisationLIKE
condition, par exemple:Meilleure façon est de convertir votre longue colonne de clob tant est désapprouvée. Ou écrire un pl/sql bloc de lire ces données. Voir lien ci-dessous pour en avoir une claire explication.
Références: http://www.oraclebin.com/2012/12/using-long-data-type-in-where-clause-in.html