我有一个Informix 11.70数据库。我无法在表上成功执行此插入语句。插入包含新行和引号的文本列的错误
INSERT INTO some_table(
col1,
col2,
text_col,
col3)
VALUES(
5,
50,
CAST('"id","title1","title2"
"row1","some data","some other data"
"row2","some data","some other"' AS TEXT),
3);
我收到的错误是:
[错误代码:-9634,SQL状态:IX000]从焦炭没有强制转换为文本。
我发现,我应该为了让使用文本文字新行添加这种说法,所以我说这个我已经写了同样的查询上面:
EXECUTE PROCEDURE IFX_ALLOW_NEWLINE('t');
不过,我收到同样的错误。
我也读过IBM文档说:或者允许换行,我可以在ONCONFIG
文件中设置ALLOW_NEWLINE
参数。我想最后一个需要管理员访问服务器来改变那个我没有的配置文件,我不想利用这个设置。
感谢您的回复。不幸的是,用于与数据库通信的是Java,而ORM(特别是Hibernate)。所以我担心我不能利用'loc_t'定位器结构。至于LVARCHAR类型,它看起来像与MS SQL Server的NVARCHAR具有大致相同的限制,或者我错了吗?如果不是,我担心我们的文本列将保存比4096个字符更长的字符串(如果使用UTF-8)。 –
LVARCHAR默认为2048字节,但可以达到32 KiB的阴影。但是整行长度也有32 KiB限制。 BYTE,TEXT,BLOB和CLOB在行中存储固定大小(56字节或64字节)的描述符,并将数据存储在别处。 LVARCHAR存储在行中。你需要多大?您正在使用哪种JDBC驱动程序? Informix驱动程序(与Java通用客户端或JDBC的JCC版本相对)应该很好地处理BYTE,TEXT,但可能不像SQL显示的字符串字面值。 –
我假设你没有CAST而尝试失败?人们通常不会在CAST遇到问题之前添加CAST,但以防万一... –