webentwicklung-frage-antwort-db.com.de

Oracle - Wie entferne ich Leerzeichen?

Ich führe diese Aussage aus:

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

Obwohl ich die trim () -Anweisung verwendet habe, sieht meine Ausgabe folgendermaßen aus:

A                                                            B                              
___                                                          ____
kunjramansingh                                               smartdude

Der Datentyp der Spalten 'a' und 'b' ist varchar2 (255).

Es gibt eine Lücke zwischen den Daten von zwei Ausgaben. Ich möchte die Daten ohne Leerzeichen anzeigen - in einem Format wie dem Folgenden:

A             B
___           ______ 
kunjramansinghsmartdude

Wie kann ich das machen?

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

---
AB___kunjramansinghsmartdude

Update:

Verketten Sie einfach Strings:

SELECT  a || b
FROM    mytable
12
Quassnoi

Es sieht so aus, als würden Sie die Abfrage in sqlplus ausführen. Sqlplus muss sicherstellen, dass im Spaltenabstand genügend Platz vorhanden ist, damit die maximale Zeichenfolgengröße angezeigt werden kann (255). Normalerweise besteht die Lösung darin, die Spaltenformatierungsoptionen (Vor der Abfrage ausführen: Spalte A Format A20) zu verwenden, um die maximale Zeichenfolgengröße zu reduzieren (Zeilen, die diese Länge überschreiten, werden über mehrere Zeilen angezeigt).

12
Plasmer

Wenn ich es richtig verstehe, willst du das

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

sie können 'rpad' in Ihrer Auswahlabfrage verwenden und die Größe angeben ...

select rpad(a , 20) , rpad(b, 20) from x ;

dabei ist der erste Parameter der Name Ihrer Spalte und der zweite Parameter die Größe, mit der Sie auffüllen möchten.

4
Gaurav Singh

Das klingt nach einem Ausgabeformatierungsproblem? Wenn Sie SQL Plus verwenden, verwenden Sie den COLUMN-Befehl wie folgt (vorausgesetzt, Sie möchten eine maximale Anzeigebreite von jeweils 20 Zeichen):

column a format a20
column b format a20
select a, b from mytable;
3
Tony Andrews

Angenommen, wir haben eine Spalte mit Werten, die nur aus alphanumerischen Zeichen und Unterstrich bestehen. Wir müssen diese Spalte aus allen Leerzeichen, Tabulatoren oder sonstigen weißen Zeichen entfernen. Das folgende Beispiel wird das Problem lösen. Die zugeschnittene und die ursprüngliche werden beide zum Vergleich angezeigt. 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 formatiert die Spalten so, dass sie den maximalen möglichen Wert enthalten, der in diesem Fall 255 Zeichen beträgt.

Um zu bestätigen, dass Ihre Ausgabe diese zusätzlichen Leerzeichen nicht tatsächlich enthält, versuchen Sie Folgendes:

SELECT
  '/' || TRIM(A) || '/' AS COLUMN_A
 ,'/' || TRIM(B) || '/' AS COLUMN_B
FROM
  MY_TABLE;

Wenn die '/' - Zeichen von Ihrer Ausgabe getrennt sind, bedeutet dies, dass es sich nicht um Leerzeichen handelt, sondern um andere Whitespace-Zeichen, die dort eingedrungen sind (z. B. Registerkarten). Wenn dies der Fall ist, handelt es sich wahrscheinlich um ein Problem mit der Eingabeüberprüfung irgendwo in Ihrer Anwendung.

Das wahrscheinlichste Szenario ist jedoch, dass die Zeichen '/' tatsächlich den Rest Ihrer Zeichenfolgen berühren, was beweist, dass der Leerraum tatsächlich abgeschnitten ist.

Wenn Sie sie gemeinsam ausgeben möchten, sollte dies die Antwort von Quassnoi tun.

Wenn es sich nur um ein Anzeigeproblem handelt, sollte die von Tony Andrews gegebene Antwort gut funktionieren.

1
JosephStyons

Gehen Sie folgendermaßen vor, um sicherzustellen, dass Ihre Ausgabe keinen Leerraum enthält:

select first_name || ',' || last_name from table x;

Ausgabe

John Smith

Jane, Doe

0
Jules Walker

Wenn Sie Leerzeichen in einem bestimmten Spaltenwert ersetzen möchten, können Sie das folgende Skript verwenden, um die Aufgabe für Sie auszuführen. 

UPDATE TableName TN
   SET TN.Column_Name   = TRIM (TN.Column_Name);
0
Chikku Jacob

Ich habe den folgenden Befehl verwendet, um Leerzeichen in Oracle zu entfernen 

Mein Tabelle Name ist - NG_CAP_SENDER_INFO_MTR  

Mein Spaltenname ist - SENINFO_FROM

UPDATE NG_CAP_SENDER_INFO_MTR SET SENINFO_FROM = TRIM(SENINFO_FROM); 

Bereits Antwort auf StackOverflow LTRIM RTRIM

Und es funktioniert gut

0
Ved Prakash