>> Électroniques Technologie >  >> Maison intelligente >> Vie intelligente

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 une colonne varchar2 a un maximum de 4 000 caractères, tandis que clob peut stocker d'énormes quantités de données de caractères. Vous pouvez toujours atteindre votre objectif, cependant, 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 un acronyme pour "character large object", et il peut stocker jusqu'à 4 Go de données. Il est utilisé par plusieurs systèmes de base de données, notamment DB2 et Oracle. CLOB est utile lorsque vous avez besoin de stocker de grandes quantités de données, mais la taille elle-même peut causer des problèmes dans certaines situations. C'est pourquoi la conversion d'un CLOB Oracle en un format de chaîne d'une taille plus gérable est souvent une bonne approche avant d'effectuer des opérations.

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 "table" à 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 saisir :

SELECT 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 par le début), mais les champs "clob_column" et "table" sont utilisés exactement de la même manière qu'auparavant. Ainsi, dans le même exemple, vous pourriez 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 plus grande chaîne, 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.


Vie intelligente