Je lance cette déclaration:
select trim(a),trim(b) from table x;
Même si j'ai utilisé l'instruction trim (), ma sortie ressemble à ceci:
A B
___ ____
kunjramansingh smartdude
Le type de données de la colonne 'a' et 'b' est varchar2 (255).
Il y a un écart entre les données de deux sorties. Je veux montrer les données sans les espaces - dans un format comme celui-ci:
A B
___ ______
kunjramansinghsmartdude
Comment puis-je faire ceci?
SELECT REGEXP_REPLACE('A B_ __ kunjramansingh smartdude', '\s*', '')
FROM dual
---
AB___kunjramansinghsmartdude
Mettre à jour:
Il suffit de concaténer des chaînes:
SELECT a || b
FROM mytable
Il semble que vous exécutiez la requête dans sqlplus. Sqlplus doit s’assurer qu’il ya suffisamment de place dans l’espacement des colonnes pour que la taille maximale de la chaîne puisse être affichée (255). Généralement, la solution consiste à utiliser les options de formatage des colonnes (Exécuter avant la requête: colonne A format A20) pour réduire la taille de chaîne maximale (les lignes dépassant cette longueur seront affichées sur plusieurs lignes).
Si je comprends bien, c'est ce que vous voulez
select (trim(a) || trim(b))as combinedStrings from yourTable
vous pouvez utiliser 'rpad' dans votre requête select et spécifier la taille ...
select rpad(a , 20) , rpad(b, 20) from x ;
où le premier paramètre est le nom de votre colonne et le second paramètre, la taille avec laquelle vous souhaitez utiliser le tampon.
Cela ressemble à un problème de formatage de sortie? Si vous utilisez SQL Plus, utilisez la commande COLUMN comme ceci (en supposant que vous souhaitiez une largeur d'affichage maximale de 20 caractères pour chacun):
column a format a20
column b format a20
select a, b from mytable;
Disons que nous avons une colonne avec des valeurs composées uniquement de caractères alphanumériques et de soulignement. Nous devons supprimer cette colonne de tous les espaces, tabulations ou autres caractères blancs ..___ L'exemple ci-dessous résoudra le problème. Le rogné et l’original sont tous deux affichés pour la comparaison .select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;
REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS
SQL Plus formate les colonnes de manière à contenir la valeur maximale possible , qui dans ce cas est de 255 caractères.
Pour confirmer que votre sortie ne contient pas réellement ces espaces, essayez ceci:
SELECT
'/' || TRIM(A) || '/' AS COLUMN_A
,'/' || TRIM(B) || '/' AS COLUMN_B
FROM
MY_TABLE;
Si les caractères '/' sont séparés de votre sortie, cela signifie que ce ne sont pas des espaces, mais un autre caractère d'espacement qui y est entré (tabulations, par exemple). Si tel est le cas, il s'agit probablement d'un problème de validation des entrées quelque part dans votre application.
Cependant, le scénario le plus probable est que les caractères '/' vont en fait toucher le reste de vos chaînes, ce qui prouve que l'espace blanc est effectivement réduit.
Si vous souhaitez les sortir ensemble, alors la réponse donnée par Quassnoi devrait le faire.
S'il s'agit uniquement d'un problème d'affichage, la réponse donnée par Tony Andrews devrait bien fonctionner.
Utilisez ce qui suit pour vous assurer qu'il n'y a pas d'espace dans votre sortie:
select first_name || ',' || last_name from table x;
Sortie
John Smith
Jane Doe
Si vous souhaitez remplacer des espaces dans une valeur de colonne particulière, vous pouvez utiliser le script suivant pour effectuer le travail à votre place.
UPDATE TableName TN
SET TN.Column_Name = TRIM (TN.Column_Name);
J'ai utilisé la commande ci-dessous pour supprimer les espaces dans Oracle
Mon Table Nom est - NG_CAP_SENDER_INFO_MTR
Mon Nom de colonne est - SENINFO_FROM
UPDATE NG_CAP_SENDER_INFO_MTR SET SENINFO_FROM = TRIM(SENINFO_FROM);
Déjà répondre sur StackOverflow LTRIM RTRIM
Et ça marche bien