2017-11-24 3 views
0

Wenn ich das folgende Skript in SQLPlus ausführen:Wie SQLPlus um zu verhindern, Trimmen Leerzeichen

CREATE TABLE trailing_spaces (text VARCHAR2(100)) 
/

-- Note that there is a blank space after 'one' and 'two' 
INSERT INTO trailing_spaces (text) VALUES ('one 
two 
three') 
/

COMMIT 
/

SQLPlus automatisch die Linien schneidet und entfernt die Leerzeichen am Ende, so dass stattdessen den Wert des Einführens one two three wird onetwothree einsetzen.

Kann jemand SQLPlus daran hindern, diese Zeilen zu trimmen und das Skript so auszuführen, wie es ist?

+0

Was passiert, wenn Sie versuchen, eine einzelne Zeile einzufügen, wie 'in trailing_spaces (text) -Werte einfügen ('one two three');'? – JSapkota

+0

Es wird funktionieren, aber leider haben meine Skripte Zeilenumbrüche und müssen mit SQLPlus ausgeführt werden – pablomatico

+0

Wenn ich Ihre Insert-Anweisung ausführen, bekomme ich den Text als drei verschiedene Zeilen. Wie konntest du den Text in einer Zeile als "onetwothree" bekommen? Ich benutze Oracle 11.2.0.4. – JSapkota

Antwort

0

Sie können es tun, wie in SQLPLUS:

SQL> CREATE TABLE trailing_spaces (text VARCHAR2(100)); 

Table created. 

SQL> INSERT INTO trailing_spaces (text) VALUES ('one'||' '|| 
              'two'||' '|| 
              'three') ; 

1 row created. 

SQL> COMMIT; 

Commit complete. 

SQL> SELECT * FROM TRAILING_SPACES; 

TEXT 
-------------------------------------------------------------------------------- 
one two three 
+0

Ich kann nicht sofort einen besseren Weg finden, aber das ist wirklich schrecklich ... es erfordert erhebliche Textmanipulation (Sie haben auch die Zeilen-Feeds entfernt). – Ben

+0

@Ben. 'aber das ist wirklich schrecklich'..könnte aber besser sein als nicht arbeiten, man hat was, was funktioniert. Sie haben eine elegante Lösung. – XING

0

Wenn ich Ihre Insert-Anweisung ausführen, erhalte ich den Text auf drei verschiedene Linien. Wie können Sie den Text in einer Zeile als onetwothree erhalten? Ich verwende Oracle 11.2.0.4

In meinem Fall, wenn ich das Skript nicht ändern kann, kann ich das vorhandene Skript ausführen und es während der Auswahl wie unten dargestellt manipulieren.

SQL> insert into tbl1 values('one 
    2 two'); 

1 row created. 

SQL> insert into tbl1 values('three 
    2 four'); 

1 row created. 

SQL> select * from tbl1; 

TEXT 
-------------------- 
one 
two 

three 
four 



SQL> select REPLACE(REPLACE(text, CHR(10)), CHR(13)) as text from tbl1; 

TEXT 
-------------------- 
one two 
three four 
Verwandte Themen