0

値が「abcd」の列を挿入したい

DB2 データベースを使用しています。

私が使用しているクエリは次のとおりです。

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

ただし、値の先頭にあるスペース文字は、テーブルから値をフェッチするときに自動的にトリミングされます。

行を取得するために使用しているクエリは次のとおりです。

select full_record from mySchema.myTable;

データベースでこの先行スペースを保持するにはどうすればよいですか?

4

4 に答える 4

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
于 2012-04-27T06:52:31.433 に答える
0

MSSQLでは、Ltrim、Rtrimを使用できない場合を除き、フィールドの値の前後のスペースがトリミングされていないため、正常に機能します...関数...使用しているデータベースを教えてください??

于 2012-04-27T06:44:11.657 に答える
0

どのようにテーブルを作成しましたか (DDS またはスクリプト)? フィールドのデータ型は何ですか?

CHARフィールドをデータ型として定義してみてください。

于 2012-04-27T06:48:23.353 に答える
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() で削除できます。

于 2012-04-28T08:33:23.477 に答える