SQL数据库数据类型长度的问题

SQL数据库数据类型长度的问题,第1张

本来不想回答这个问题的,但看这些回答者的答案实在让人看不过去。

int 存储数值的范围是:-2的32次方--2的32次发减1,(也就是-247483648至2147483647之间的所有正负整数),所以说int是不需要指定长度为多少的。

解释下char和nchar的异同

首先char众所周知最大取值是8000,每一个字节就是一个存储单位,英文和数值只占一个存储单位,所以char(10)可以最多容纳10个英文或者数字,但中文不一样,在某些系统下有每个中文会占4个存储单位,所以char(10)有可能容纳2个或者4个中文。

而nchar的最大取值范围是4000刚好是char的一半,为什么是4000呢?因为nchar采用了一种标准,这种标准的名字我就忘记了,它规定每个存储单位是2个字节而并非char的每存储单位1字节。所以nchar(10)最大可以容纳10个数字或者英文字母或者标点符号,而中文就最大可以容纳10个或者5个,视系统情况而定。

都是oracle的函数

length()用于计算字符串长度,在mssql中对应函数为len()

nvl是NULL值替换函数,判断参数1为NULL的情况下替换输出参数2,

在mssql中的对应函数为isnull()

length(NVL(RZSJ,''))

输出RZSJ列值的长度,如果为NULL则输出空字符串的长度(0)

1、因为很久以前数据库只支持CHAR类型,有些应用的业务逻辑也只是针对CHAR类型设计的,所以数据库软件也就一直保留CHAR类型。

2、CHAR类型是定长的,一些数据库可以在每条记录中不存储字段长度信息,这样可以节省部份空间,也可以方便做一些内存对齐提高性能。

3、还有说法是有些数据经常修改,长度可能变化,会引起碎片,采用CHAR就不会产生碎片,这个说法比较多。

SQL中统计字符串长度的函数是:函数len(string)。

比如:

select len('abc')输出3

select len('abcde')输出5

字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于CHAR、VARCHAR、 BINARY、 和VARBINARY 数据类型以及可以隐式转换为CHAR 或VARCHAR的数据类型。可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数。

常用的字符串函数有:

ASCII():返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。

CHAR():将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。

LOWER()和UPPER():LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。

STR():把数值型数据转换为字符型数据。

STR (<float_expression>[,length[, <decimal>]])

length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。

当length 或者decimal 为负值时,返回NULL;

当length 小于小数点左边(包括符号位)的位数时,返回length 个;

先服从length ,再取decimal ;

当返回的字符串位数小于length ,左边补足空格。

LTRIM() 把字符串头部的空格去掉。

RTRIM() 把字符串尾部的空格去掉。

left():LEFT (<character_expression>, <integer_expression>)返回character_expression 左起 integer_expression 个字符。

RIGHT():RIGHT (<character_expression>, <integer_expression>)返回character_expression 右起 integer_expression 个字符。

SUBSTRING():SUBSTRING (<expression>, <starting_ position>, length)返回从字符串左边第starting_ position 个字符起length个字符的部分。

CHARINDEX():返回字符串中某个指定的子串出现的开始位置。CHARINDEX (<’substring_expression’>, <expression>)

其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。

此函数不能用于TEXT 和IMAGE 数据类型。

PATINDEX():返回字符串中某个指定的子串出现的开始位置。PATINDEX (<’%substring _expression%’>, <column_ name>)其中子串表达式前后必须有百分号“%”否则返回值为0。与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。

QUOTENAME():返回被特定字符括起来的字符串。QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。

REPLICATE():返回一个重复character_expression 指定次数的字符串。REPLICATE (character_expression integer_expression) 如果integer_expression 值为负值,则返回NULL 。

REVERSE():将指定的字符串的字符排列顺序颠倒。REVERSE (<character_expression>) 其中character_expression 可以是字符串、常数或一个列的值。

REPLACE():返回被替换了指定子串的字符串。REPLACE (<string_expression1>, <string_expression2>, <string_expression3>) 用string_expression3 替换在string_expression1 中的子串string_expression2。

SPACE():返回一个有指定长度的空白字符串。SPACE (<integer_expression>) 如果integer_expression 值为负值,则返回NULL 。

STUFF():用另一子串替换字符串指定位置、长度的子串。

STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>):如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则返回NULL 值。如果length 长度大于character_expression1 中 start_ position 以右的长度,则character_expression1 只保留首字符。

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。

对于ntext,text,image请使用datalength函数取得字符串长度,注意ntext是unicode字符,一个字符长度2(不管是不是中文),所以datalength得出的长度是字符数2

以上就是关于SQL数据库数据类型长度的问题全部的内容,包括:SQL数据库数据类型长度的问题、数据库sql语句length(NVL(RZSJ,''))是什么意思、数据库设计如何确定字段的长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10159353.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存