保留数据库中字符串中的前导空格

时间:2012-04-27 06:13:22

标签: sql db2

我想插入一个值为'abcd'

的列

我正在使用DB2数据库。

我使用的查询是:

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

但是,当我从表中取回值时,值前面的空格字符会自动修剪。

我用来取回行的查询是:

select full_record from mySchema.myTable;

如何在数据库中保留此前导空格?

4 个答案:

答案 0 :(得分:0)

在MSSQL中,它工作正常,除了你不能使用Ltrim,Rtrim之外,你的字段值之前和之后都没有修剪空格...功能......请告诉我你正在使用哪个数据库?

答案 1 :(得分:0)

你是如何创建表(DDS或脚本)的?该字段的数据类型是什么?

尝试将字段定义为CHAR数据类型。

答案 2 :(得分: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

答案 3 :(得分: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()中删除尾随空格。