精华内容
下载资源
问答
  • 数据库字符型字段设计的原则 第二章 字符类型字段概述 类型 长度 使用说明 长度说明 char(n) 定长 索引效率高 程序里面使用trim去除多余的空白 n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节...


    数据库字符型字段设计的原则

    第二章 字符类型字段概述
    类型 长度 使用说明 长度说明
    char(n)
    定长 索引效率高 程序里面使用trim去除多余的空白 n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节
    varchar(n)
    变长 效率没char高 灵活 n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节
    text(n)
    变长 非Unicode数据 不用指定长度
    nchar(n)
    定长 处理unicode数据类型(所有的字符使用两个字节表示) n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍
    nvarchar(n)
    变长 处理unicode数据类型(所有的字符使用两个字节表示) n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零
    ntext(n)
    变长 处理unicode数据类型(所有的字符使用两个字节表示) 不用指定长度


    2.1 CHAR概述
    CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim()。
    2.2 VARCHAR概述
    存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

    2.3 TEXT概述
    text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
    2.4 NCHAR、NVARCHAR、NTEXT。
    这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
    以下字符串:我和coffee
    如果设计成varchar字段,则占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。
    所以如果字段值只是英文可选择varchar,而字段值如果存在双字节(中文、韩文等)字符时则用nvarchar

    综上, 一般来说,如果含有中文字符,用nchar/nvarchar/ntext,如果纯英文和数字,用char/varchar/text。

    可以概括成:
    CHAR,NCHAR 定长,速度快,占空间大,需处理
    VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理
    NCHAR、NVARCHAR、NTEXT处理Unicode码

    第三章 何时会出现此问题
    正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??).而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,多数情况下,在开发阶段是发现不了的.
      当然,使用nvarchar存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的.
      所以在Design的时候应该尽量使用nvarchar来存储数据.只有在你确保该字段不会保存中文的时候,才采用varchar来存储.这个时候才不会有问题.
      但是如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??).而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造成的,你会试着去装中文字体,试着去设置操作系统的语言环境...这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或者nchar或者ntext).对项目管理比较熟悉的朋友应该都知道,到布署阶段再来修改数据库是一个很恐怖的事情.
      使用nvarchar的另一个好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别.

    教参网址:
    http://www.cnblogs.com/yelaiju/archive/2010/05/29/1746826.html


    展开全文
  • 比如:Oracle数据库采用utf-8编码,此时你定义一个字符型字段的长度是10,那么这个10不是表示字符的个数。可能有会认为他也能存10个汉字,这个的话就错了。实际上它只能存储3汉字,因为当数据库采用utf-8编码时,在...

     我们在在定义数据的时候,当定义的字段是字符型时,而这个字段要存储汉字时,要特别注意。此时字符的长度应该与数据库采用的编码结合起来。

     

    比如:Oracle数据库采用utf-8编码,此时你定义一个字符型字段的长度是10,那么这个10不是表示字符的个数。可能有会认为他也能存10个汉字,这个的话就错了。实际上它只能存储3汉字,因为当数据库采用utf-8编码时,在数据库中,一个汉字是用3个字节才存储。所以,在utf-8编码下,要想存储10个汉字,那你至少要把这个字段的长度定义成30。比如定义成varchar2(30) 。

    转载于:https://www.cnblogs.com/hibernate3-example/archive/2009/03/23/2492590.html

    展开全文
  • oracle数据库中的c_lfimg字段是数值型的,而sqlserver数据库中的该字段为字符型,结果插入到数据库中就成了下面的样子。 [img=https://img-bbs.csdn.net/upload/201312/31/1388451016_751826.jpg][/img] 上面...
  • Pl/SQL 执行select * from nls_database_parameters---可以查看数据库的...NLS_CHARACTERSET是数据库字符集,NLS_NCHAR_CHARACTERSET是国家字符集 ORACLE中有两大类字符型数据,VARCHAR2是按照数据库字符集来存储...

    转自:http://www.itpub.net/thread-836643-1-1.html

    Pl/SQL 执行select * from nls_database_parameters---可以查看数据库的字符集

    NLS_CHARACTERSET是数据库字符集,NLS_NCHAR_CHARACTERSET是国家字符集
    ORACLE中有两大类字符型数据,VARCHAR2是按照数据库字符集来存储数据。而NVARCHAR2是按照国家字符集存储数据的。同样,CHAR和NCHAR也一样,一是数据库字符符,一是国家字符集。
    字符集不同,二进制码的组合就不同。

    欢迎大家访问我的博客:http://www.ruisoftcn.com/blog

    转载于:https://www.cnblogs.com/smthts/p/3191247.html

    展开全文
  • 字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序。 但发现to_number总是报错,就想着里面应该是有字符存在。后来使用了正则关系式,问题解决。 以下是正则关系式的两种...

    由于需要维护表里面的值,id主键是字符串型,保存的都是数字,每次都要看好久,才知道新增id,用哪个数字;

    遇到了一个主键排序的问题。字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序。

    但发现to_number总是报错,就想着里面应该是有字符存在。后来使用了正则关系式,问题解决。

    以下是正则关系式的两种用法,记录下来:

    方法一:

    select * from nc_dept  order by  to_number(regexp_substr(id,'[0-9]*[0-9]',1));

     

    方法二:

    select * from nc_dept order by to_number(translate(id, '0123456789.' || id, '0123456789.')) asc nulls last;

     

     

     

    展开全文
  • 字符型注入漏洞
  • 字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序。 但发现to_number总是报错,就想着里面应该是有字符存在。后来使用了正则关系式,问题解决。 以下是正则关系式的两种...
  •  问题:数据库中自增的都是int,变成字符串该怎么办呢?因为在数据库端实现自增,不能在软件端处理了。在不考虑  几个函数的解释:  Right(str,len)-字段返回右边的len个字符字符串str  MAX()-字段中大...
  • Mysql数据库字符类型

    2020-04-30 09:39:25
    数值字符串类型、日期和时间类型 数值 范围字节 类型 tinint (0,257) 极小整数值 int 或 integer (0,4294967295) ...
  • 墨者学院—— SQL手工注入漏洞测试(MySQL数据库-字符型)题解 首先我们根据背景介绍可知: PHP代码未对用户提交的参数进行过滤,我们便可以试试SQL漏洞(虽然题目已经说明是字符型的SQL注入漏洞) 打开靶机,我们...
  • 举个例子,往名为记录的TABLE里输入一个字符串 String str; statement.executeUpdate("INSERT INTO 记录 VALUES('"+str+"')"); 关键的操作是’"+str+"’ 实际上呢,如果你往数据库里输入固定字段,只需用单引号 ...
  • 陆续收到若干同行来邮件,讨论关于数据库字符集和国家语言字符集之间的关系。这里我提出自己的看法。本文后面的内容部分来自网上关于Sybase ASE的一篇技术文摘,但下载日久,难分谁之作品,这里借用一下,如果正好是...
  • 陆续收到若干同行来邮件,讨论关于数据库字符集和国家语言字符集之间的关系。这里我提出自己的看法。本文后面的内容部分来自网上关于Sybase ASE的一篇技术文摘,但下载日久,难分谁之作品,这里借用一下,如果正好是...
  • 数据库字符集 》表的字符集 》 字段的字符集 (从前往后优先级由低到高,从左往右继承,如果表没设置字符集,继承数据库的,如果字段没设置,继承表的) 数据库的字符集如果是utf8,表和字段的字符集继承 字段的字符...
  • Space(4-DATALENGTH(@lsh))+@lsh @lsh为字符型 转载于:https://my.oschina.net/gaoxiang303/...
  • postgre数据库字符集和编码转换

    千次阅读 2017-07-11 14:31:37
    数据库管理系统支持某种编码,主要...数据库服务器支持某种编码,是指数据库服务器能够从客户端接收、存储以及向客户端提供该种编码的字符(包括标识符、字符型字段值),并能将该种编码的字符转换到其它编码(如UTF-
  • 数据库字符类型char和varchar的区别 char char数据类型用来存储长度为n个字节的固定长度非Unicode字符数据,每个字符占一个字节。当定义一列为此类型时,必须制定列长,否则默认长度为1, 格式:char[(n)] 说明:n:1...
  • ... 解题思路: 寻找注入点:靶环境页面和上一篇一致,不在重复。 判断sql注入为字符型或整数型方法:...根据注入的sql可判断出该sql为字符型注入 仿照上篇步骤进行sql注入: 获取列表的字...
  • select max(convert(int,itemid)) from item //itemid为转化字段 ,item为表名 转载于:https://www.cnblogs.com/Code007/archive/2010/02/25/1673890.html
  • 数据库服务器支持某种编码,是指数据库服务器能够从客户端接收、存储以及向客户端提供该种编码的字符(包括标识符、字符型字段值),并能将该种编码的字符转换到其它编码(如UTF-8编码转到GBK编码)。 1.1指定...
  • 判断注入点 and ‘1’='1(正常) and ‘1’='2(报错) 判断列数 ?id=’ order by N#经测试字段...爆出数据库 ?id=’ union select ‘1’,database(),user(),'4 爆出表 ?id=’ union select 1,group_concat(table_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,999
精华内容 3,199
关键字:

数据库字符型