2011-07-01 91 views
0

接受的答案,以this question聲稱使用CHAR列將保留所有填空格在Sybase的字符串,但這並不是我所看到的(除非我弄錯的行爲是什麼「填空格」的意思)。例如,當我運行下面的腳本:Sybase是否支持不正確的字符串類型?

create table #check_strings 
(
    value char(20) null 
) 

insert into #check_strings values (null) 
insert into #check_strings values ('') 
insert into #check_strings values (' ') 
insert into #check_strings values ('  ') 
insert into #check_strings values ('blah') 
insert into #check_strings values ('blah ') 
insert into #check_strings values ('blah ') 
insert into #check_strings values (' blah ') 

select value, len(value) from #check_strings 

我得到以下輸出:

[NULL]   - [NULL] 
[single space] - 1 
[single space] - 1 
[single space] - 1 
blah    - 4 
blah    - 4 
blah    - 4 
[four spaces]blah - 8 

有沒有什麼辦法讓的Sybase到剝離尾部的空格?此外,有沒有辦法讓它將空字符串保存爲空字符串,而不是作爲單個空格?

我正在使用Sybase 15.5。

回答

1

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug/sqlug208.htm

「當你創建一個char,單字符或nchar列允許空值,Adaptive Server將其轉換爲varchar,univarchar或nvarchar列,並使用存儲規則的數據類型。」

請檢查非空列。

+0

謝謝。它適用於not null設置,但問題是它總是返回長度爲20的字符串(例如,我插入一個空白字符串,並在select上返回20個空格)。這不是一個可接受的解決方案。 Varchar是要走的路,但是這種修改我插入的數據的行爲在Sybase中是相當惱人的行爲。 –

+0

前一段時間,我必須在同一個案例中總是添加一個字符。當然,我必須在客戶端刪除最後一個字符。這不是最好的,但在我的情況下工作。 – kolchanov

2

要在char列上有固定長度,必須使用not null屬性。

對於可變長度列,使用varchar或char和null屬性。

然後,使用datalength函數而不是len函數或charlength函數來測量實際數據大小。

相關問題