Comment convertir de Clob en Varchar2 dans Oracle

La conversion de données dans un format de chaîne entre différents types de données est généralement un processus simple dans Oracle, mais certains cas sont un peu plus difficiles que d'autres. L'un d'eux se produit lorsque vous utilisez Oracle pour convertir clob en varchar2, ce qui est difficile car un La colonne varchar2 a un maximum de 4 000 caractères, tandis que clob peut stocker d'énormes quantités de caractères Les données. Cependant, vous pouvez toujours atteindre votre objectif en utilisant la méthode dbms_lob substr ou to_char et en spécifiant une taille maximale.

CLOB et VARCHAR2 expliqués

CLOB (ou "clob" familièrement) est l'acronyme de "character large object" et il peut stocker jusqu'à 4 Go de données. Il est utilisé par plusieurs systèmes de bases de données, notamment DB2 et Oracle. CLOB est utile lorsque vous devez stocker de grandes quantités de données, mais la taille elle-même peut poser des problèmes dans certaines situations. C'est pourquoi la conversion d'un CLOB Oracle en un format de chaîne de taille plus gérable est souvent une bonne approche avant d'effectuer des opérations.

Vidéo du jour

Le format VARCHAR2 stocke de plus petites quantités de données, généralement jusqu'à 4 000 octets, sauf si vous utilisez une taille de chaîne maximale étendue, auquel cas elle peut aller jusqu'à 32 767 octets. Pour un jeu de caractères à un octet, vous pouvez généralement obtenir jusqu'à 4 000 caractères dans une colonne. L'écart entre les tailles maximales de ces deux formats de données est à l'origine des problèmes lors de la conversion.

La méthode dbms_lob substr

Pour convertir une chaîne clob en varchar2, ouvrez votre programme SQL *Plus. La syntaxe de la conversion que vous devez effectuer est :

SELECT dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) FROM table

Ici, les valeurs entre parenthèses sont celles que vous devez modifier, ainsi que "tableau" à la fin. Ceux-ci correspondent à la colonne ("clob_column") et à la table avec laquelle vous travaillez. Le "for_how_many_bytes" vous donne la possibilité de spécifier le nombre d'octets de données que vous souhaitez convertir, et le "from_which_byte" vous permet de spécifier un point de départ.

Donc, si vous avez une table appelée « taxes » et un champ appelé « net_pay », et en supposant que vous voulez 4 000 octets à partir du premier, vous devez entrer :

SELECTIONNER dbms_lob.substr (net_pay, 4000, 1) FROM taxes

Pour convertir la chaîne au format varchar2.

La méthode TO_CHAR

Vous pouvez également utiliser la commande TO_CHAR avec une syntaxe très similaire pour atteindre le même objectif :

SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) FROM table

Ici, les octets de début et de fin sont spécifiés comme 0 et 3999 (pour une chaîne de 4 000 caractères commençant depuis le début), mais les champs "clob_column" et "table" sont utilisés exactement de la même manière que avant de. Ainsi, dans le même exemple, vous pouvez saisir :

SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) FROM taxes

Fondamentalement, plutôt que de terminer le processus en une seule étape, cela utilise la commande SUBSTR pour extraire une sous-chaîne de la chaîne plus grande, puis il utilise "to_char" pour gérer la conversion. Si la colonne clob en question contient moins de 4 000 octets d'informations, vous pouvez entrer le nom de la colonne entre parenthèses après to_char au lieu de spécifier une sous-chaîne.