将TEXT转换为VARCHAR

时间:2017-01-27 23:31:19

标签: sybase sybase-ase

我注意到,在将TEXT转换为VARCHAR时,转换后的值会被静默剪裁为30个字符。

CREATE TABLE foo (x TEXT)
-- insert a string that's 50 characters long
INSERT INTO foo(x) VALUES('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
SELECT CHAR_LENGTH(CONVERT(VARCHAR, x)) FROM foo -- retuns 30
SELECT CHAR_LENGTH(CONVERT(VARCHAR(3000), x)) FROM foo -- returns 50

我的问题是:

  1. 在哪里记录/来自?
  2. 在不添加任意高值的情况下进行转换的惯用方法是什么? (如上面的第二个SELECT声明)

1 个答案:

答案 0 :(得分:0)

您最好始终指定varchar-length,并且varchar的最大长度在Sybase ASE 15.7和16.0 16384中。

如果您尝试创建更长的varchar,则会出现以下错误: 长度或精度规格16385不在1到16384的范围内。