我有一個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,但以防萬一... –