2009-07-28 8 views
6

Je me présente cette déclaration:Oracle - comment supprimer les espaces blancs?

select trim(a),trim(b) from table x; 

Même si je la déclaration, ma sortie trim() ressemble à ceci:

A               B        
___               ____ 
kunjramansingh            smartdude 

Le type de données de la colonne 'a' et 'b' est varchar2 (255).

Il existe un écart entre les données de deux sorties. Je veux montrer les données sans l'espace - dans un format comme celui-ci:

A    B 
___   ______ 
kunjramansinghsmartdude 

Comment est-ce que je peux faire ceci?

+0

Attendez, ce que nous parlons les données renvoyées ou l'affichage des résultats de la requête? SQL * PLUS? – curtisk

+0

Bonjour curtisk, Nous parlons des données retournées> –

Répondre

12
SELECT REGEXP_REPLACE('A B_ __ kunjramansingh smartdude', '\s*', '') 
FROM dual 

--- 
AB___kunjramansinghsmartdude 

Mise à jour:

Juste concaténer des chaînes:

SELECT a || b 
FROM mytable 
+0

sympa! juste sauvé ma journée ... – CFNinja

5

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

select (trim(a) || trim(b))as combinedStrings from yourTable 
3

Cela ressemble à un problème formatage de sortie ? Si vous utilisez SQL Plus, utilisez la commande COLONNE comme celui-ci (en supposant que vous souhaitez une largeur d'affichage maximum de 20 caractères pour chacun):

column a format a20 
column b format a20 
select a, b from mytable; 
+0

bien qu'il l'a maintenant couvert, soit le scénario :) – curtisk

1

SQL Plus formate les colonnes pour maintenir le maximum valeur, qui ce cas est de 255 caractères.

Pour confirmer que votre sortie ne contient pas réellement ces espaces supplémentaires, 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, puis qui indique que ce n'est pas des espaces, mais d'autres le caractère d'espace qui y est entré (onglets, par exemple). Si tel est le cas, il s'agit probablement d'un problème de validation d'entrée quelque part dans votre application.

Cependant, le scénario le plus probable est que les caractères '/' toucheront en fait le reste de vos chaînes, prouvant ainsi que les espaces sont réellement rognés.

Si vous souhaitez les sortir ensemble, alors la réponse donnée par Quassnoi devrait le faire.

Si c'est purement un problème d'affichage, alors la réponse donnée par Tony Andrews devrait fonctionner correctement.

11

Il semble que vous exécutiez la requête dans sqlplus. Sqlplus doit s'assurer qu'il y a assez de place dans l'espacement des colonnes pour que la taille maximale de la chaîne puisse être affichée (255). Habituellement, 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 maximale des chaînes (les lignes qui dépassent cette longueur seront affichées sur plusieurs lignes).

-1

Exécuter ci-dessous requête en remplacement TABLE_NAME & COLUMN_NAME avec votre table réelle & noms de colonnes:

UPDATE TABLE_NAME SET COLUMN_NAME=TRIM(' ' from COLUMN_NAME); 
3

vous pouvez utiliser 'rpad' dans votre requête de sélection 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 deuxième paramètre est la taille avec laquelle vous voulez ajouter un pad.

0

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

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

Say, nous avons une colonne avec des valeurs composées de caractères alphanumériques nd soulignement seulement. Nous devons couper cette colonne de tous les espaces, onglets ou tout autre caractère blanc. L'exemple ci-dessous résoudra le problème. Le trimmed one et l'original sont affichés pour comparaison. select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

0

Si vous souhaitez remplacer les espaces blancs dans une valeur de colonne particulière, vous pouvez utiliser le script suivant pour faire le travail pour vous,

UPDATE TableName TN 
    SET TN.Column_Name = TRIM (TN.Column_Name); 
Questions connexes