数据类型及数据处理函数

  • 一、数据类型
  • 1、数值型
  • 1.INTEGER
  • 2.DECIMAL
  • 3.FLOAT/DOUBLE(REAL)
  • 2、文本型(区分大小写)
  • 1.CHAR
  • 2.VARCHAR
  • 3、日期型
  • date/time/datetime/timestamp
  • 二、数据处理(函数)
  • 1、数值型处理函数(参数为数值型)
  • 2、文本型处理函数(参数为文本型)
  • 3、日期型处理函数(参数为日期型)


一、数据类型

1、数值型

1.INTEGER

定义:整数,只能储存整数
用法:INTEGER, INTEGER(10),其中10为数字最大宽度

2.DECIMAL

定义:定点型,储存固定位数的小数
用法:DECIMAL(M,D)
M-整个数字最长位数,默认10
D-小数部分位数,默认0
例,DECIMAL(10,2)的含义是:小数部分2位,整数部分 8位(10- 2),如果多出位数会四舍五入,短了小数点用0补齐;
注意:DECIMAL适用场景是精确计算,比如金额等;如果用float会丢失精度,原因在于二进制要想表示十进制的数就会存在误差,比如用二进制来表示0.1,根本无法精确表示,但是这不是bug,是个feature,标准就是这样定的。(详细原因参考)

3.FLOAT/DOUBLE(REAL)

定义:浮点型,储存不固定位数的小数

用法:FLOAT/DOUBLE(REAL)

sql server 仅提取数字 sql的数字只取整数_sql

2、文本型(区分大小写)

1.CHAR

定义:定长字符串
用法:CHAR(10)

2.VARCHAR

定义:可变长字符串
用法:VARCHAR(100)

注意:此处的长度单位为字符个数,而不是字节的长度;
两者的区别:CHAR型不足位的时候要补空位;VARCHAR是动态分配,不存在不足位。

3、日期型

date/time/datetime/timestamp

sql server 仅提取数字 sql的数字只取整数_sql server 仅提取数字_02

注:如果定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

二、数据处理(函数)

函数表达式 = 函数名 + (参数)

1、数值型处理函数(参数为数值型)

1.绝对值函数 ABS ABS (-3) = 3
2.平方根函数 SQRT SQRT (4) = 2
3.指数函数 EXP EXP (4) = e^4
4.四舍五入函数 ROUND ROUND (1.234, 2) = 1.23
5.圆周率函数 PI PI () = π

2、文本型处理函数(参数为文本型)

1.字符长度 CHARLENTH CHARLENTH ( ‘数据’ ) = 2
2.字节数 LENTH LENTH ( ‘数据’ ) = 4
3.去除右边空值 RTRIM RTRIM ( ‘HOME ’ ) = ‘HOME’
4.去除左边空值 LTRIM lTRIM ( ’ HOME’ ) = ‘HOME’
5.字母转换为大写 UPPER UPPER ( ‘home ’ ) = ‘HOME’
6.字母转换为小写 LOWER LOWER ( ‘HOME’ ) = ‘home’
7.截取左边n个字符 LEFT(str,n)
8.截取右边n个字符 RIGHT((str,n)
9.从第n个字符截取到第m个字符 SUBSTR(str,n,m) SUBSTR(‘world’,2,4)=‘orl’
注:不写m,默认截取到最后一个字符
10.拼接字符串 CONCAT(str1,str2) CONCAT (‘hello’,‘world’) =hellloworld
11. 按指定间隔符号拼接字符串 CONCAT_WS(separator,str1,str2,…) CONCAT_WS(’,',‘hello’,‘world’) =hello,world
12.分组拼接字符GROUP_CONCAT(DISTINCT col ORDER BY col ASC/DESC SEPARATOR ‘指定间隔符号’)

3、日期型处理函数(参数为日期型)

1.获取具体的日期段 YEAR/MONTH/DATE YEAR( ‘2022-1-1’ ) = ‘2022’
2.获取具体的时间段 HOUR/MINUTE/SECOND HOUR( ‘18:01:16’ ) = ‘18’
3.获取月份名称 MONTHNAME MONTHNAME( ‘2022-1-1’ ) = ‘JAN’
4.获取当前日期时间 NOW NOW() = SYSTERMTIME
6.获取当前日期 CURDATE CURDATE()
7.获取当前时间 CURTIME CURTIME()
8.时间增加 DATE_ADD DATE_ADD( now(),INTERVAL 1 YEAR)
或date_format(now(),‘%Y-%m-%d’/‘%Y-%m-%d-%H-%i-%s’) + interval 1 year/1month/1day/1 hour/1 minute/1second
9.时间减少 DATE_SUB DATE_SUB( now(),INTERVAL 1 YEAR)
或date_format(now(),‘%Y-%m-%d’) - interval 1 day/……