【问题标题】:Does Sybase support string types that it doesn't right trim?Sybase 是否支持不能正确修剪的字符串类型?
【发布时间】:2013-01-30 11:05:49
【问题描述】:

this question 的公认答案声称使用 char 列将保留 all 在 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。

【问题讨论】:

    标签: sybase


    【解决方案1】:

    要在 char 列上设置固定长度,您必须使用 not null 属性。

    对于可变长度列,使用带有null 属性的varchar 或char。

    然后使用datalength 函数而不是len 函数或charlength 函数来测量实际数据大小。

    【讨论】:

      【解决方案2】:

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

      “当您创建允许空值的 char、unichar 或 nchar 列时,Adaptive Server 会将其转换为 varchar、univarchar 或 nvarchar 列并使用这些数据类型的存储规则。”

      请检查非空列。

      【讨论】:

      • 谢谢。它适用于非空设置,但问题是它总是返回长度为 20 的字符串(例如,我插入一个空白字符串,它在选择时返回 20 个空格)。这不是一个可接受的解决方案。 Varchar 是要走的路,但是这种修改我要插入的数据的行为在 Sybase 中是相当烦人的行为。
      • 前段时间我不得不在相同的情况下总是在末尾添加一个字符。当然,我必须在客户端删除最后一个字符。这不是最好的,但适用于我的案例解决方案。
      猜你喜欢
      • 1970-01-01
      • 2011-08-15
      • 2020-01-25
      • 2011-03-01
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      相关资源
      最近更新 更多