我想插入一个值为“abcd”的列
我正在使用 DB2 数据库。
我正在使用的查询是:
insert into mySchema.myTable value (' abcd');
但是,当我从表中取回值时,值前面的空格字符会自动修剪。
我用来取回该行的查询是:
select full_record from mySchema.myTable;
如何在数据库中保留这个前导空间?
在 MSSQL 中,它工作正常,除非您不能使用 Ltrim,Rtrim... 功能...请告诉我您使用的是哪个数据库?
您是如何创建表(DDS 或脚本)的?字段的数据类型是什么?
尝试将字段定义为CHAR
数据类型。
在 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
一切正常:
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 =>
伊迪丝:这是预期的行为。char() 是固定长度,varchar() 是可变长度(有最大值),所以 char() 的长度是恒定的。必须保留前导空格,可以在 varchar() 中删除尾随空格。