我正在将数据从SQL Server迁移到Oracle。我不得不使用我们编写的C#代码来完成这项工作。 (很长一段时间,但与公司标准有关,因此不允许使用SSIS或其他工具)
我遇到的问题是,当我在SQL Server上有一个NVARCHAR(200)字段时,在oracle中,它是NVARCHAR(200)。据我所知,在Oracle上,200代表200字节。我的问题是如何从填充了所有200个字符的字段的SQL Server中移动数据。问题是SQL Server中的200个字符超过200个字节。
在这个过程中,我正在从SQL Server读取数据,将其存储到字符串数组中,然后使用数据绑定(Oracle Data Access)将数据推送到Oracle。一切正常,但是,当我有一个在SQL Server中完全填充的字段时,它具有超过Oracle中相同字段定义的最大允许字节数。
是否有一种简单的方法可以检查SQL Server中字符串的字节大小,看看它是否超过200个字节,如果是,请截断它以便只移动200个字节? (对于我正在做的事情,截断数据是可以的)
答案 0 :(得分:0)
据我所知,在Oracle上,200代表200字节。 的
VARCHAR
适用,但NVARCHAR
不适用
NVARCHAR2数据类型是仅限Unicode的数据类型。创建包含NVARCHAR2列的表时,可以提供它可以容纳的最大字符数。 [...]字符数据类型的宽度规范NVARCHAR2 是指字符数。 的
(强调我的)
所以对于NVARCHAR
你应该没问题。
对于VARCHAR2
,您可以确实指定字节或字符的长度 - 但即使数字表示默认设置,也可以随时更改。