ORACLE varchar2 長度問題整體

2021-06-19 03:44:59 字數 992 閱讀 9496

oracle中,資料庫表的varchar2型別和pl/sql中varchar2型別長度是不等的。

varchar2型別的表的列最大長度:4000位元組

而pl/sql中varchar2型別的變數最大長度:32767

網路上關於varchar2型別問題整理:

問題:

oracle中定義某字段為「varchar2(4000)」,按理應該可以插入2000漢字可insert操作時只能插入最多六百個漢字,直接修改資料就能插入1000個漢字,為什麼
有沒什麼好方法啊,不修改字段,我用的是hibernate,在操作時只能插入六百多字,而在資料庫中直接insert可以插入1000,nvarchar也一樣,clob怎麼用啊
回答:

中間可能包含空格,標點啥的也算在內了,varchar2最多能儲存4000個字元,如果大於這個數修改字段型別吧 clob
追問

club怎麼用,改型別改不了了
回答

是的,如果已經有資料,且不相相容的話,直接改是改不了,但可以採用變通的方式,先新增一新列,型別為clob,將原來那列的資料複製到新列中,然後刪除原來的列,再修改新列列名為老

gxlu_edge

|六級 某字段為「varchar2(4000)」,按理應該可以插入2000漢字

-- 如果資料庫字符集是zhs16gbk 的話,是正確的,但如果資料庫字符集是utf8,則乙個漢字通常佔3個byte,檢查下你的伺服器字符集:select userenv('language') from dual

-- 檢查非英文本母佔的byte:select lengthb(你的字元) from dual

可insert操作時只能插入最多六百個漢字,直接修改資料就能插入1000個漢字

-- 這個應該不可能,只要修改能插入1000個漢字,那麼insert也能插入1000個漢字。如果你的是utf8,那麼按照道理來說,欄位最多插入1333個漢字。

oracle varchar2存漢字出現問題

一 場景 頁面的remark備註欄位在資料庫中的長度為varchar2 4000 jsp頁面校驗長度的方式為 var valflag editform.validate strategyname remark 這樣就會出現乙個問題,欄位的長度在js這邊校驗通過了,於是就到了儲存到資料庫這一步了,結果...

NB IOT系列專題2 長連線

為什麼要單獨講nb iot的長連線呢?有人會問,我之前用的2g 4g都是直接用的呀,連上伺服器,發個心跳不就做到長連線了嗎?沒錯,2g 4g的通訊模組這樣做確實就可以了,但是nb iot不可以,由於nb iot的網路原因,本身就是針對低頻次 小資料量的場景,對長連線方案並不友好。但是既然有需求,當然...

藍橋杯校內模擬賽 2長草

問題描述 小明有一塊空地,他將這塊空地劃分為 n 行 m 列的小塊,每行和每列的長度都為 1。小明選了其中的一些小塊空地,種上了草,其他小塊仍然保持是空地。這些草長得很快,每個月,草都會向外長出一些,如果乙個小塊種了草,則它將向自己的上 下 左 右四小塊空地擴充套件,這四小塊空地都將變為有草的小塊。...