nvarchar和varchar的轉換問題
2024-07-21 02:35:38
供稿:網友
java編程,將表中的nvarchar記錄導出存儲到xml文件中,利用xdk的函數導出后,發現xml文件中存儲的表中的nvarchar字段中的中文變成了二進制碼,再將xml文件導入時報錯。 所以我想將nvarchar先轉換成varchar類型,導出后,再將varchar導回到nvarchar類型導入,請教兩種類型的轉換函數時什么?
Specifying the USING CHAR_CS argument converts text into the database character set. The output datatype is VARCHAR2.
Specifying the USING NCHAR_CS argument converts text into the national character set. The output datatype is NVARCHAR2.
Example 1
CREATE TABLE t1 (char_col CHAR(20),
nchar_col nchar(20));
INSERT INTO t1
VALUES ('Hi', N'Bye');
SELECT * FROM t1;
CHAR_COL NCHAR_COL
-------- ---------
Hi Bye
Example 2
UPDATE t1 SET
nchar_col = TRANSLATE(char_col USING NCHAR_CS);
UPDATE t1 SET
char_col = TRANSLATE(nchar_col USING CHAR_CS);
SELECT * FROM t1;
CHAR_COL NCHAR_COL
-------- ---------
Hi Hi
Example 3
UPDATE t1 SET
nchar_col = TRANSLATE('deo' USING NCHAR_CS);
UPDATE t1 SET
char_col = TRANSLATE(N'deo' USING CHAR_CS);
SELECT * FROM t1;
CHAR_COL NCHAR_COL
-------- ---------
deo deo
表不多的話可以這樣
//創建一個新表,并把數據轉換為varchar2
create table newtbname as select col1,translate(col2 using char_cs),col3 from tbname;
rename tbname to tbname_temp;//將原先的表重新命名
rename newtbname to tbname;//把新創建的表改名為原先的表名
這樣就轉換過來了
作完后,把tbname drop掉,rename tbname_temp to tbname就行了
這樣應該可以解決問題