J'ai une table avec une colonne de données de type CLOB, elles sont toutes très courtes et ne dépassent pas 20 octets, mais je ne vois pas la chaîne réelle dans les données CLOB.
Par exemple, si j'utilise SELECT *
, sous le type CLOB, toutes les données sont comme:
CLOB, 8 Bytes
CLOB, 15 Bytes
CLOB, 9 Bytes
Mais je veux juste voir le contenu des données CLOB.
J'ai essayé:
SELECT DBMS_LOB.SUBSTR(ClobColumnName, 20 ,1)
Et ça ne marche pas, l'erreur est:
Code d'erreur: 4121, état SQL: S1000
Impossible de trouver la colonne "DBMS_LOB", la fonction définie par l'utilisateur ou l'agrégat "DBMS_LOB.SUBSTR", ou le nom est ambigu.
Je peux donc demander quelle est la syntaxe pour afficher directement une donnée CLOB dans une requête?
J'utilise SQL Server avec dbVisualizer
.
J'ai trouvé une solution. Il devrait y avoir de meilleures façons, s'il vous plaît montrer plus de solutions possibles dans les commentaires.
SELECT CAST(ClobColumnName AS VARCHAR(50)) AS ClobColumnName ;
Pour le voir dans DbVis, il vous suffit de le modifier dans les options .
J'ai table avec une colonne a type de données CLOB (1000K), après avoir stocké le message/données dans la colonne CLOB et trouvé une solution voir les données réelles dans la colonne CLOB.
SELECT CAST(T.CLOB_COLUMNNAME AS VARCHAR(1000)) AS SAMPLEDATA
FROM TABLE_NAME AS T
La requête ci-dessus CAST le CLOB (Character Large Objects) en une chaîne normale.
Je suppose que vous utilisez le pilote jTDS pour vous connecter à SQL Server . Dans les propriétés du pilote de la connexion, vous pouvez définir le paramètre "USELOBS" sur False pour le convertir automatiquement en chaîne.
J'ai eu le même problème et l'ai résolu en utilisant DBeaver ( http://dbeaver.jkiss.org/ ) au lieu de dbVisualizer.
Lorsque j'utilise DBeaver et que je sélectionne * depuis mon serveur SQL, je peux simplement cliquer deux fois sur le CLOB dans le jeu de résultats pour ouvrir une nouvelle fenêtre contenant le contenu. Très glissant.