客户告诉我用varchar2(10 char)代替varchar2(10 byte)。我完全不知道varchar2(10),varchar2(10 char)和varchar2(10 byte)有什么区别。另外,你能告诉我在哪种情况下我们应该使用。
发布于 2019-02-05 11:08:31
VARCHAR2(10 byte)将支持最多10个字节的数据,多字节字符集中的数据可能只有两个字符。
VARCHAR2(10 char)可以支持多达40个字节的信息,并将支持多达10个字符的数据。
Varchar2(10)使用NLS_LENGTH_SEMANTICS的当前值来确定字符串的限制。
如果是字节,则为10字节。
如果是char,则是10个字符。
在多字节字符集中,这些可以是不同的!因此,如果NLS_LENGTH_SEMANTICS =字节,则可能只能在varchar2中存储5个字符。因此,varchar2(10字符)是显式的。这可以存储多达10个字符。Varchar2(10)是隐式的。它可以存储10个字节或10个字符,这取决于DB配置。
发布于 2019-02-05 11:10:17
来自asktom ID:9532325800346614530
Varchar2(10)使用NLS_LENGTH_SEMANTICS的当前值来确定字符串的限制。 如果这是字节,那么它是10字节。 如果它是char,那么它是10个字符。 在多字节字符集中,这些可以是不同的!因此,如果NLS_LENGTH_SEMANTICS =字节,则可能只能在varchar2中存储5个字符。 因此,varchar2(10字符)是显式的。这可以存储多达10个字符。Varchar2(10)是隐式的。它可以存储10个字节或10个字符,这取决于DB配置。 最好是明确的(10个字符)。尽管所有prod/test/dev数据库对NLS_LENGTH_SEMANTICS的设置应该相同,但并不意味着它们具有.
https://stackoverflow.com/questions/54533047
复制相似问题