2012-04-27 43 views
0

我想插入一個值爲'abcd'的列保留數據庫中字符串的前導空格

我正在使用DB2數據庫。

我使用的查詢是:

insert into mySchema.myTable value (' abcd'); 

然而,在值前面的空格字符得到自動當我取的值從表背修剪。

我用來接回該行的查詢是:

select full_record from mySchema.myTable; 

如何保存在數據庫中的這一領先的空間?

+0

第一個空間不應該被修剪,你的查詢是什麼讓它返回值? – Nick 2012-04-27 06:16:48

+0

@Nick:查看我的更新。 – Nik 2012-04-27 06:18:00

+0

您使用的是DB2嗎? – Nick 2012-04-27 06:28:32

回答

0

所有工作的罰款:

Database server  = DB2/SUN64 9.1.9 

db2 => create table tt (a char (10), b varchar(10)) 
DB20000I The SQL command completed successfully. 
db2 => insert into tt values('a ', 'a '), (' b', ' b'), (' c ',' c '), ('d','d') 
DB20000I The SQL command completed successfully. 

db2 => select a, b, length(a), length(b) from tt 

A   B   3   4   
---------- ---------- ----------- ----------- 
a   a     10   2 
b   b     10   2 
c   c     10   3 
d   d     10   1 

    4 record(s) selected. 

db2 => select '<'||a||'>', '<'||b||'>', length(a), length(b) from tt 

1   2   3   4   
------------ ------------ ----------- ----------- 
<a   > <a >     10   2 
< b  > < b>     10   2 
< c  > <c>     10   3 
<d   > <d>     10   1 

    4 record(s) selected. 

db2 => 

EDITH:這是預期的行爲。 char()是固定長度,varchar()是可變長度(最大值),所以char()的長度是常量。前導空格必須保留,尾隨空格可以在varchar()中刪除。

0

在MSSQL中,它可以很好地工作,它不會在您的字段的值和值之前修剪空間,除非您不能使用Ltrim,Rtrim ...功能...請告訴我您正在使用哪個數據庫?

+0

正在使用DB2數據庫的目的 – Nik 2012-04-27 06:51:49

0

您是如何創建表格(DDS或腳本)的?該字段的數據類型是什麼?

嘗試將該字段定義爲CHAR數據類型。

+0

實際字段的數據類型是varchar(250),並且我使用簡單的創建查詢創建了表 – Nik 2012-04-27 06:52:40

0

在sql server中,當在數據類型爲char和varchar的列中插入前導空格時,將保留前導空格。但是尾隨的空格會自動截斷。

create table TestSpace (firstname char(1000), lastname varchar(100)) 

insert into TestSpace (firstname, lastname) 
select ' 123', ' 345' 
union all 
select '123 ', '345 ' 

select firstname, lastname , LEN(firstname) firstlen, LEN(lastname) lastlen 
from TestSpace 
相關問題