select函数

SQL语句——05、类型转换函数

烂漫一生 提交于 2019-12-01 20:35:48
类型转换概述 在赋值语句中数据类型会隐式转换,隐式转换应当尽量避免,因为写出来的SQL难理解,随着时间流逝自己都很难理解。特别是嵌入到大型程序中时,另外,oracle升级会修改隐式转换的规则,这会使程序移植遇到问题。 尤其是索引列不能使用隐式转换,这样就不走索引 。 赋值语句中oracle的自动转换规则: 将变长字符型(varchar2)或定长字符型(char)转换成数值型(number) 将变长字符型(varchar2)或定长字符型(char)转换成日期型(date) 将数值型(number)转换成变长字符型(varchar2) 将日期型(date)转换成变长字符型(varchar2) 表达式中oracle的自动转换规则: 将变长字符型(varchar2)或定长字符型(char)转换成数值型(number) 将变长字符型(varchar2)或定长字符型(char)转换成日期型(date) 转换成功的条件: 在将字符型数据转换成数字型时,要保证字符型数据为有效的数。 在将字符型数据转换成日期型时,要保证字符型数据位有效的日期。 ----拿字符和数字比较 oracle自动将字符串转成了数字 SQL> select ename,sal from emp where sal > '4000'; ENAME SAL ---------- ---------- KING 5000 ---

MySQL查询生日是今天的用户

瘦欲@ 提交于 2019-12-01 18:34:24
select * from customer where MONTH(birthday) = MONTH(NOW()) and DAY(birthday) = DAY(NOW()) 如题,MySQL使用函数查询生日是今天的用户 -- 还有五天要过生日的用户 select * from customer where DATEDIFF(birthday,now()) = 5 原文链接:https://blog.csdn.net/key_artist/article/details/80937934 来源: https://www.cnblogs.com/yangchong/p/11712353.html

oracle数据库基本语句

ぐ巨炮叔叔 提交于 2019-12-01 17:22:01
DEPT表结构: EMP表结构: --创建表空间 create tablespace itheima --指定数据文件位置 datafile 'C:\itheima.dbf' --指定大小 size 100m autoextend on next 10m; --删除表空间 --drop tablespace itheima --创建用户 create user itheima identified by itheima default tablespace itheima; drop user itheime; --给用户授权 --oracle数据库中的常用角色 connect--链接角色 resource--开发者角色(我们的) dba--超级管理员角色 --给itheima授权dba角色 grant dba to itheima; --切换到itheima用户 --创建person表 create table person( pid number(20), pname varchar2(10) ); --修改列的名称 alter table person rename column gender to sex; alter table person drop column sex; --修改表结构 --添加一列 alter table person add gender

经典sql题目(使用窗口函数解决)

与世无争的帅哥 提交于 2019-12-01 13:56:33
很多同学可能对窗口函数,但是他确实已经出现在了sqlserver,oracle,mysql 等关系型数据库中 以及hive ,presto等数仓中。使用 窗口函数确实能够为我们解决很多sql难题。 下面我通过一些经典的sql面试题,讲解如何通过窗口函数,解决。 1.用SQL选出每个人成绩的最高的前两条纪录 原表记录: zs,math,75 zs,chinese,81 lisi,chinese,76 lisi,math,89 wangwu,math,100 wangwu,chinese,81 wangwu,english,99 zhaoliu,math,16 zhaoliu,english,48 zhaoliu,chinese,59 需要对name进行分组,对成绩进行排名,所以考虑使用窗口函数,目前mysql 8.0支持窗口函数,该操作是在hive上执行的查询结果: select * from (select *, rank() over(partition by name order by fenshu desc) as flag from studentss)t where t.flag<=2; lisi math 89 1 lisi chinese 76 2 wangwu math 100 1 wangwu english 99 2 zhaoliu chinese 59 1

Hive学习笔记02

江枫思渺然 提交于 2019-12-01 10:16:28
1. Hive基本操作   a. DML操作 load:加载时只是把数据文件移动到hive表对应的位置。 loacl如果指定了就在本地的文件系统,local会将本地文件系统的文件复制到目标文件系统中。 overwrite:如果使用了overwrite目标表或者分区中的内容就会被覆盖。 load data local inpath 'path' into table tb_load1; View Code insert insert overwrite table stu_buck select * from student cluster by(Sno); View Code select order by:全局排序 sort by:局部排序,在数据进reduce之前进行排序。如果reducetask任务数大于1不保证全局有序。 distribute by(字段):根据指定字段数据分发到不同的reduce,分发算法是hash散列。 Cluster by(字段):除了具有Distribute by的功能外,还会进行排序。如果distribute by 和order by 是一个字段等同于Cluster by(字段) 2. Hive Join 不支持等值连接,因为等值连接很难转换为mapreduce任务。 https://www.cnblogs.com/yiwanfan/p

MyBatis动态SQL

╄→尐↘猪︶ㄣ 提交于 2019-12-01 09:53:53
动态SQL的作用 MyBatis的动态SQL主要就是为了解决手动拼接SQL的麻烦 动态SQL中的元素 动态SQL是MyBatis的强大特性之一,MyBatis3采用了功能强大的基于OGNL的表达式来完成动态SQL。动态SQL主要元素如下表所示: 1.<if> 元素 在MyBatis中,<if>元素是最常用的判断语句,它类似于Java中的if语句,主要用于实现某些简单的条件选择。其基本使用示例如下: <select id="findCustomerByNameAndJobs" parameterType="com.ma.po.Customer" resultType="com.ma.po.Customer"> select * from t_customer where 1=1 <if test="username != null and username != ''"> and username like '%${username}%' </if> <if test="jobs != null and jobs !=''"> and jobs = #{jobs} </if> </select> 2.<choose>、<when>、<otherwise>元素 如果是java语言,这种情况就相当于switch...case...default语句。 select * from t

探索SQL Server元数据(二)

為{幸葍}努か 提交于 2019-12-01 07:57:24
背景   上一篇中,我介绍了SQL Server 允许访问数据库的元数据,为什么有元数据,如何使用元数据。这一篇中我会介绍如何进一步找到各种有价值的信息。以触发器为例,因为它们往往一起很多问题。 那么如何找到触发器的数据?   以sys.system_views is表开始。让我们查询出数据库中使用触发器的信息。可以告知你当前SQL Server版本中有什么触发器。 SELECT schema_name(schema_ID)+'.'+ name FROM sys.system_views WHERE name LIKE '%trigger%' ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ---------------------------------------- sys.dm_exec_trigger_stats sys.server_trigger_events sys.server_triggers sys.trigger_event_types sys.trigger_events sys.triggers (6 row(s) affected)   其中sys.triggers看起来信息很多,它又包含什么列?下面这个查询很容易查到: SELECT Thecol.name+ ' '+ Type_name(TheCol

Linux网络编程三、 IO操作

人盡茶涼 提交于 2019-12-01 07:13:32
  当从一个文件描述符进行读写操作时,accept、read、write这些函数会阻塞I/O。在这种会阻塞I/O的操作好处是不会占用cpu宝贵的时间片,但是如果需要对多个描述符操作时,阻塞会使同一时刻只能处理一个操作,从而使程序的执行效率大大降低。一种解决办法是使用多线程或多进程操作,但是这浪费大量的资源。另一种解决办法是采用非阻塞、忙轮询,这种办法提高了程序的执行效率,缺点是需要占用更多的cpu和系统资源。所以,最终的解决办法是采用IO多路转接技术。   IO多路转接是先构造一个关于文件描述符的列表,将要监听的描述符添加到这个列表中。然后调用一个阻塞函数用来监听这个表中的文件描述符,直到这个表中有描述符要进行IO操作时,这个函数返回给进程有哪些描述符要进行操作。从而使一个进程能完成对多个描述符的操作。而函数对描述符的检测操作都是由系统内核完成的。   linux下常用的IO转接技术有:select、poll和epoll。 select:   头文件:#include <sys/select.h>、#include <sys/time.h>、#include <sys/types.h>、#include <unistd.h>   函数:     int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set

[转帖]Hive 快速入门(全面)

徘徊边缘 提交于 2019-12-01 06:56:11
Hive 快速入门(全面) 2018-07-30 16:11:56 琅琊山二当家 阅读数 4343 更多 分类专栏: hadoop 大数据 转载: https://www.codercto.com/a/5110.html 前言 我写这篇文章的目的是尽可能全面地对Hive进行入门介绍,这篇文章是基于hive-1.0.0版本介绍的,这个版本的Hive是运行在MapReduce上的,新的版本可以运行在Tez上,会有一些不同。 Hive是对数据仓库进行管理和分析数据的工具。但是大家不要被“数据仓库”这个词所吓倒,数据仓库是很复杂的东西,但是如果你会 MYSQL 或者MSSQL,就会发现Hive是那么的简单,简单到甚至不用学就可以使用Hive做出业务所需要的东西。 但是Hive和MYSQL毕竟不同,执行原理、优化方法,底层架构都完全不相同。 大数据离线分析使用Hive已经成为主流,基于工作中Hive使用的经验,我整理了这个入门级别的文章,希望能给想入门的同学提供一些帮助。 一、Hive简介 Facebook为了解决海量日志数据的分析而开发了Hive,后来开源给了 Apache 软件基金会。 官网定义: The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large

6-5 函数

巧了我就是萌 提交于 2019-12-01 06:55:35
一 函数 MySQL中提供了许多内置函数,例如: 一、数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。 二、聚合函数(常用于GROUP BY从句的SELECT查询中) AVG(col)返回指定列的平均值 COUNT(col)返回指定列中非NULL值的个数 MIN(col)返回指定列的最小值 MAX(col)返回指定列的最大值 SUM(col)返回指定列的所有值之和 GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果 三、字符串函数 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。 CONCAT(str1,str2,...) 字符串拼接 如有任何一个参数为NULL ,则返回值为 NULL。 CONCAT_WS(separator,str1,str2,...) 字符串拼接(自定义连接符) CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。 CONV(N,from_base,to_base) 进制转换 例如: SELECT CONV('a',16,2); 表示将 a 由16进制转换为2进制字符串表示 FORMAT(X,D) 将数字X 的格式写为'