web-dev-qa-db-fra.com

Oracle - comment supprimer les espaces blancs?

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?

9
kunj
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
12
Quassnoi

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).

12
Plasmer

Si je comprends bien, c'est ce que vous voulez

select (trim(a) || trim(b))as combinedStrings from yourTable
5
curtisk

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.

4
Gaurav Singh

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;
3
Tony Andrews

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;

1
BIJUNATOR
REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS
1
user3496353

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.

1
JosephStyons

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

0
Jules Walker

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);
0
Chikku Jacob

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

0
Ved Prakash