从 Oracle 迁移到 MySQL。使用字节定义的 VARCHAR2 长度。如何移植?
Migrating from Oracle to MySQL. VARCHAR2 length defined using bytes. How to port?
我在 Oracle 过程中有这样声明的变量:
myMsg VARCHAR2(256 BYTE)
如何将其移植到 mysql?因为当我尝试在 MySQL 过程中声明它时:
DECLARE myMsg VARCHAR(256 BYTE);
MySQL 抛出语法错误。
如何将该 Oracle 变量定义移植到 MySQL?
256 BYTE
部分不允许我在 MySQL 中声明变量,我需要在 MySQL 中找到类似于此 256 BYTE
表达式的内容。
mysql
中varchar
的最大大小是mysql 5.0.3
之前的255
来自 MySql
文档:
A variable-length string. M represents the maximum column length in
characters. In MySQL 5.0, the range of M is 0 to 255 before MySQL
5.0.3, and 0 to 65,535 in MySQL 5.0.3 and later
在 MySQL 5.0.3 and later
中,长度大于 255
的 CHAR
是非法的并且失败并出现错误
mysql> CREATE TABLE c1 (col1 INT, col2 CHAR(500));
ERROR 1074 (42000): Column length too big for column 'col' (max = 255);
**use BLOB or TEXT instead**
在错误中明确提到 use BLOB or TEXT
有关 string data type
link
的更多信息
在 MySql 中,varchar 列是这样声明的
colname VARCHAR(256),
another VARCHAR(20) NOT NULL,
等等。 Oracle 语法不同。
在 MySql 中的存储代码中,在函数或过程范围内,变量声明如下:
DECLARE myMsg VARCHAR(256);
如果您没有意识到这一点,您很快就会发现:Oracle PL/SQL 和 MySql 用于存储代码的小语言彼此非常不同。
这将是 MySQL 中的 VARBINARY(256)
。
我在 Oracle 过程中有这样声明的变量:
myMsg VARCHAR2(256 BYTE)
如何将其移植到 mysql?因为当我尝试在 MySQL 过程中声明它时:
DECLARE myMsg VARCHAR(256 BYTE);
MySQL 抛出语法错误。
如何将该 Oracle 变量定义移植到 MySQL?
256 BYTE
部分不允许我在 MySQL 中声明变量,我需要在 MySQL 中找到类似于此 256 BYTE
表达式的内容。
mysql
中varchar
的最大大小是mysql 5.0.3
255
来自 MySql
文档:
A variable-length string. M represents the maximum column length in characters. In MySQL 5.0, the range of M is 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in MySQL 5.0.3 and later
在 MySQL 5.0.3 and later
中,长度大于 255
的 CHAR
是非法的并且失败并出现错误
mysql> CREATE TABLE c1 (col1 INT, col2 CHAR(500));
ERROR 1074 (42000): Column length too big for column 'col' (max = 255);
**use BLOB or TEXT instead**
在错误中明确提到 use BLOB or TEXT
有关 string data type
link
在 MySql 中,varchar 列是这样声明的
colname VARCHAR(256),
another VARCHAR(20) NOT NULL,
等等。 Oracle 语法不同。
在 MySql 中的存储代码中,在函数或过程范围内,变量声明如下:
DECLARE myMsg VARCHAR(256);
如果您没有意识到这一点,您很快就会发现:Oracle PL/SQL 和 MySql 用于存储代码的小语言彼此非常不同。
这将是 MySQL 中的 VARBINARY(256)
。