美文网首页数据库学习
数据生成、转换和操作

数据生成、转换和操作

作者: Manfestain | 来源:发表于2019-11-25 21:36 被阅读0次

主要使用数据库的内建函数完成。


使用字符串数据

SQL中默认使用单引号(或撇号)分割,所以对本身包含单引号的字符串会产生警告(比如'This string doesn't work.')。可以通过在单引号前再添加一个单引号作为转义符

内建函数quote()可用单引号将字符串包含起来,并为字符串本身的单引号增加转义符。

可以使用concat()函数来连接若干字符串。Oracle可以通过||取代concat()。SQL Server通过+连接字符串。

返回数字的字符串函数
  • length()函数,返回字符串的字符数(SQL Server使用len()函数)

SELECT LENGTH(char_fld) char_length, LENGTH(vchar_fld) varchar_lenght, LENGTH(text_fld) text_length FROM string_tbl;
其中varchar和text列的长度与预期一样,但是char列中存放的字符串是使用空格向右补齐的,MySQL服务器在获取数据时会删除char类型数据的尾端空格。

  • position()函数,返回字符在字符串中的位置(数据库中第一个字符位置号是1,而返回0则表示没有找到)。
    locate()函数从字符串中任意位置开始搜索,接受第三个参数,用于指定搜索的起始位置。

SELECT POSITION('characters' IN vchar_fld) FROM string_tbl;
SELECT LOCATE('is', vchar_fld, 5) FROM string_tbl;

  • strcmp()函数用来比较两个字符串,返回:-1,第一个排在第二个前边;0,两个相同;1,第一个排在第二后边。
    like()函数也可以用来比较字符串。

SELECT name, name LIKE '%ns' ends_in_ns FROM department;
Oracle和SQL Server没有功能类似的函数。MySQL的strcmp()是大小写不敏感的。
strcmp('asdf', 'ASDF')返回0.

返回字符串的字符串函数
  • concat()向已存储的字符串后附加额外的字符。

UPDATE string_tbl SET text_fld = CONCAT(text_fld, ', but now it it is longer');

concat()函数可以根据独立的数据片段构建字符串。

SELECT CONCAT(name, ' ', lname, 'has been a ', title, , 'since ', start_date) em_narrative FROM employee WHERE title = 'Teller' OR title = 'Head Teller';
> Helen Fleming has been a Head Teller since 2008-03-17.

  • insert()函数可以向字符串中间增加或替换部分字符串。接受四个参数:原始字符串、字符串操作的开始位置、需要替换的字符数及替换字符串。

`SELECT INSERT('goodbye world', 9, 0, 'cruel ') string;


使用数值数据

执行数值计算
  • mod()求余操作
  • pow()计算幂
控制数字精度
  • ceil()向上取整
  • floor()向下取整
  • round()可以向下或向上取整,与四舍五入方式类似;同时round函数提供了向右保留多少位。

SELECT ROUND(92.89992, 2);保留两位数的时候进行四舍五入。

处理有符号数
  • abs()返回绝对值
  • sign()返回数值的符号。负数时返回-1,0时返回0,正数时返回1。

使用时间数据

字符串到日期的转换
  • cast()将字符串类型转换为datetim、date和time类型。
  • str_to_date()将字符串转化为日期格式。

UPDATE individual SET brith_date = STR_TO_DATE('September 17, 2008', '%M %d, %Y') WHRER=cust_id= 9999;
将‘September 17,2008’转换为指定的日期格式。

  • 使用内建函数获取系统时钟。
    current_date() ---> 2019-11-26
    current_time() ---> 19:53:12
    current_timestamp() ---> 2019-11-26 19:53:12
操作时间数据
  • date_add()为指定日期增加任意一段时间间隔(如年、月、天)并产生一个日期。

SELECT DATE_ADD(CURRENT_TIME(), INTERVAL 5 DAY);

可以增加时间具体到xx小时xx分钟xx秒。

UPDATE transaction SET txn_date = DATE_ADD(txn_date, INTERVAL '3:27:11' HOUR_SECOND);

  • last_day()求的当月的最后一天。
返回字符串的时间函数
  • dayname()确定某一日是星期几。
  • datediff()求出两个时间之间的间隔(天)。

SELECT DATEDIFF('2009-09-03', '2009=06-24'); 返回71
当交换两个参数的次序,则返回-71。


转换函数

cast()可以进行各种类型的转换。

SELECT CAST('143244' AS SIGNED INTEGER);
服务器会从左向右试着对整个字符串进行转换,转换过程中遇到非数字字符,那么转换将终止。
SELECT CAST('999ADB223' AS UNSIGNED INTEGER);
只有999会被转换成功,剩余部分会被忽略,同时产生一个警告。

相关文章

  • 数据生成、转换和操作

    主要使用数据库的内建函数完成。 使用字符串数据 SQL中默认使用单引号(或撇号)分割,所以对本身包含单引号的字符串...

  • 2019-03-20

    1 迭代器和生成器 迭代器 获取数据:next (迭代器)、for 循环遍历 ,数据来源:转换、生成器 生成器:...

  • 数字证书简介

    目的 记录常用的数据证书格式,以及如何生成数字证书和进行格式转换 目录 生成证书 转换格式 文件格式 生成证书 k...

  • 通过递归生成树形结构数据

    如下数据: 生成树结构代码: 转换后的数据: 根据树形数据生成树形文档

  • 2、强制数据类型转换

    数据类型转换: 在js中,数据类型的转换有两种,分别是自动转换和强制转换 自动转换: 自动转换是用JS进行某些操作...

  • Swift4.2~as,as!,as?

    一,as 类型转换as :同类型的数据 OC和Swift之间转换 二,as! 类型的强制转换as!操作符是类型转换...

  • R语言基础学习1

    1 向量的生成方式有几种 2 数据类型转换的优先顺序 3 向量操作 3.1 对单个向量进行的操作 (1)赋值给一个...

  • 133、panda操作——数据转换及函数映射

    panda操作——数据转换 利用函数或映射进行数据转换 源码:

  • 12.Spark学习(Python版本):DStream转换操作

    DStream转换操作包括无状态转换和有状态转换。 无状态转换:每个批次的处理不依赖于之前批次的数据。有状态转换:...

  • Matrix01-03:ndarray数组的操作

    ndarray数组的操作 数组数据转换数组形状变换数组数据选择与操作数组计算处理数组算术运算 一、数组数据转换 注...

网友评论

    本文标题:数据生成、转换和操作

    本文链接:https://www.haomeiwen.com/subject/veqswctx.html