2

私はsybaseでこの問題に直面しています。

update tst_table set col1 = 'abc  ' 

結果は

abc

Sybase は自動的にスペースを削除します。ただし、移行中なので、スペースを手動で追加することはできません。

4

3 に答える 3

2

tst_table.col1varchar 型から char 型に変更する必要があります。Varchar は常にスペースを切り捨てますが、char はすべてのギャップにスペースを残します (たとえばabc、2 つのスペースを含む文字列)。type を使用textして、スペースを含む文字列全体を格納することもできます。

TYPE         VALUE   
-------------------------
varchar(10)  'abc'
char(10)     'abc       ' <----------- 3 chars abc + 7 spaces 
text         'abc  '

以下のコードは、列のデータ型を char(10) に変更します

alter table  tst_table
    modify col1 char(10) null

ドキュメントが言ったように

列を text または image データ型に変更することはできません。


もう1つの解決策は、リバース機能を使用することです。たとえば、テーブルがありますtab

create table tab
(
  var varchar(100)    
)

挿入データは次のようになります。

insert into tab
select reverse('abc  ')

選択すると

select var from tab

データが

'  cba'

このようなデータを取る必要があります

select reverse(var) from tab

ただし、のような文字列に対してのみ機能します'abc 'が、文字列' abc'および ' abc '.

于 2013-09-12T18:22:12.100 に答える
0

影響を受ける列のデータ型を、予期した方法でスペースを処理するものに変更する必要がある場合があります。

ここでは、さまざまなデータ型が末尾のスペースを処理する方法について詳しく説明します。

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36271.1550/html/blocks/blocks45.htm

于 2013-09-12T17:46:02.393 に答える