2013-06-20 70 views
0

我有一列varchar2類型的長度爲10,我想用7個空格更新該列,但是當我試圖選擇或更新值時,我只得到一個空格。插入/更新oracle中的列中的多個空格

如何更新列作爲7個空格是唯一可更新的值?

我嘗試以下查詢:

create table temp(name varchar(10)); 
insert into temp values('  '); 
update temp set name='  '; 
commit; 
select * from temp; 

我獲得列有1只的空間;

我正在使用Oracle SQL * Plus。

+0

我不知道甲骨文,但是很多數據庫不存儲尾隨空格。 –

+0

如果你從temp中選擇長度(名字);'它是否會返回出乎意料的東西?我懷疑你說因爲某些sqlplus表示問題,只有1個字符。 –

+1

如果您指定它們,Oracle會存儲空間。 Hatim - 我在這裏試了一下(Oracle 11gR2),它保留了空間。我正在使用SQLPlus。試試'SELECT LENGTH(name)FROM temp',看看它是否只是一個顯示SQLPlus的東西。 –

回答

3

別擔心,7個空間在那裏。它是隱藏顯示領先空間的SQL * Plus。您可以通過周圍的一些額外的符號名稱列證明這一點:

select '>'||name||'<' from temp; 
> < 

編輯:罪魁禍首是WORD_WRAPPED -feature。要停止的SQL * Plus從吃的空間,切換格式從WORD_WRAPPEDWRAPPEDTRUNCATED

update temp set name = ' x '; 
SQL> column name format a10 word 
SQL> select name from temp; 
NAME 
---------- 
x 

SQL> column name format a10 trunc 
SQL> select name from temp; 

NAME 
---------- 
    x 
+0

無論如何我都可以顯示這些空格而不包含字符。 –

+0

感謝它真的非常有幫助。我們可以在plsql中實現同樣的事情dbms_output.put_line(''); 用於顯示輸出中的所有空格。 –

相關問題