我想插入一个值为'abcd'的列保留数据库中字符串的前导空格
我正在使用DB2数据库。
我使用的查询是:
insert into mySchema.myTable value (' abcd');
然而,在值前面的空格字符得到自动当我取的值从表背修剪。
我用来接回该行的查询是:
select full_record from mySchema.myTable;
如何保存在数据库中的这一领先的空间?
我想插入一个值为'abcd'的列保留数据库中字符串的前导空格
我正在使用DB2数据库。
我使用的查询是:
insert into mySchema.myTable value (' abcd');
然而,在值前面的空格字符得到自动当我取的值从表背修剪。
我用来接回该行的查询是:
select full_record from mySchema.myTable;
如何保存在数据库中的这一领先的空间?
所有工作的罚款:
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()中删除。
在MSSQL中,它可以很好地工作,它不会在您的字段的值和值之前修剪空间,除非您不能使用Ltrim,Rtrim ...功能...请告诉我您正在使用哪个数据库?
正在使用DB2数据库的目的 – Nik 2012-04-27 06:51:49
您是如何创建表格(DDS或脚本)的?该字段的数据类型是什么?
尝试将该字段定义为CHAR
数据类型。
实际字段的数据类型是varchar(250),并且我使用简单的创建查询创建了表 – Nik 2012-04-27 06:52:40
在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
第一个空间不应该被修剪,你的查询是什么让它返回值? – Nick 2012-04-27 06:16:48
@Nick:查看我的更新。 – Nik 2012-04-27 06:18:00
您使用的是DB2吗? – Nick 2012-04-27 06:28:32