数据库
墨笙弘一
这个作者很懒,什么都没留下…
展开
-
关于SQL的风格和注意事项问题
SQL Style Guide这篇github上的文章,主要是作者结合其他的文章,总结的关于SQL书写风格方面的注意事项,做开发基本都是需要写SQL的,但是如果你使用mybatis-plus虽然不用自己写SQL,但是它会根据你的代码生成SQL。之所以会觉得SQL重要是因为,无论是对于数据的分析,排查等,都需要在数据库中使用SQL,开发中也需要手写SQL,就像JAVA开发规范一样,如果大家都按照...翻译 2019-07-27 10:34:11 · 549 阅读 · 0 评论 -
mysql之TO_DAYS(date)、DATE_ADD,DATE_SUB函数
2.TO_DAYS(date)函数返回一个年份从0开始到当前日期的天数select TO_DAYS(CURDATE()) ;#7372603.DATE_ADD(date,INTERVAL expr type)函数:向日期添加指定的时间间隔。DATE_SUB(date,INTERVAL expr type)函数:向日期减掉指定的时间间隔。date 参数是合法的日期表达式。expr 参数是您...原创 2018-07-21 10:38:01 · 1403 阅读 · 0 评论 -
mysql日期格式化
SELECT CURDATE();#2018-07-20SELECT SYSDATE();#2018-07-20 14:46:01select DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%S');SELECT NOW();#2018-07-20 14:46:01SELECT UNIX_TIMESTAMP();#1532076402 获取毫秒数date_...原创 2018-07-21 10:36:23 · 787 阅读 · 0 评论 -
Oracle中表被锁住及解锁方法
在新项目中,有个新同事写的service,其中要对数据库进行update或者insert的操作时,他并 没有对该方法添加@Transactional(readOnly = false),此时插入数据保存的时候,就会出现表被锁住,因此需要解锁,其中还需要对表进行update或者insert的方法进行事务注解的添加。 当数据库表被锁住的时候,应该按照如下的步骤操作,来解锁表:--1、查看数据...原创 2018-07-12 14:42:16 · 46581 阅读 · 2 评论 -
oracle获取最新的一条记录
SELECT lybh,cfrq FROM ( SELECT lybh,cfrq,row_number() over(partition BY lybh ORDER BY cfrq DESC) rn FROM t_eb_cfjl WHERE cflx='3' AND del_flag=0) WHERE rn=1标题描述的可能有些不清楚,意思就是获取最近的一条记录,比如这个人...原创 2018-05-06 13:19:16 · 13909 阅读 · 0 评论 -
Oracle获取两个日期之间的所有日期(年-月)
前言:在外漂泊,还是身体为重,健康是第一,因为自己扁桃体反复化脓,做了手术,目前感觉恢复的差不多了,继续学习和分享。 今天分享的是,使用oracle来查询两个日期之间的所有日期,此处指的日期格式是YYYY-MM的形式。SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2018-01', 'YYYY-MM'), ROWNUM - 1),'YYYY-MM') DAY_ID...原创 2018-05-06 12:13:59 · 11877 阅读 · 2 评论 -
Oracle CHR函数
这篇主要说一下这个函数CHR,字符函数,我在项目里常用到的是用这个函数进行换行,刚好有时间就去官网好好了解了一下这个函数的用法和含义,现在分享一下,大家共同学习。 1.CHR返回的字符在数据库字符集中具有与n相等的二进制值,如果您指定使用NCHAR_CS,则会返回国家字符集。 2.对于单字节字符集,如果n大于256,那么oracle数据库会返回n对256求余以后等效的二进制值。对于多字节字原创 2018-01-30 10:28:13 · 2897 阅读 · 0 评论 -
Oracle round函数
这篇文章主要说一下单行函数round(a,b)其中参数b是可以省略掉的,这个也是在写SQL的时候用到过,比如要对SQL计算的某个值进行四舍五入等都可以使用该函数。 1.第一个参数n代表的是你要操作的数字,我们需要对哪个值进行四舍五入,那么这个n对应的应该就是这个数字 2.第二个参数b是应该是一个integer类型,可以是正整数,也可以是负整数,也可以是0,但是当是0的时候我们一般会省略不写原创 2018-01-30 10:00:30 · 11638 阅读 · 0 评论 -
Oracle ceil函数
这篇文章主要说一下ceil函数,也是一个单行函数。 1.ceil函数的返回值是等于其参数n的一个整数或者说是大于参数n的最小整数 2.该函数以任何数字数据类型或任何可以隐式转换为数字数据类型的非数字数据类型作为参数。函数返回与参数的数字数据类型相同的数据类型。 3.具体的使用方法例子如下:原创 2018-01-30 09:44:43 · 26584 阅读 · 0 评论 -
Oracle abs函数
这篇文章主要说一下oralce中的单行函数abs(n) 1.abs函数返回值是n的绝对值或者说是n的相反数 2.该函数以任何数字数据类型或任何可以隐式转换为数字数据类型的非数字数据类型作为参数。函数返回与参数的数字数据类型相同的数据类型。 3.具体的使用方法如下面的例子所示原创 2018-01-30 09:39:43 · 31471 阅读 · 0 评论 -
Oracle换行
需求背景:要求从数据库查出来的数据按照格式输出到对应的界面域 格式如下: 学校:东风中学:三年级;。。。 医院:上海九院:李德明;。。。 开发技术:前端:miniui;后端spring mvc+mybatis 我的解决思路: 从数据库中按照要求将数据查出来,并且插数据的时候就对数据换行,然后让查找 出来的数据按照查找出来的格式直接显示到界面上。 用到的点: (1)Oracle中的换原创 2017-09-09 13:38:45 · 10812 阅读 · 0 评论 -
oracle产生连续的数字
在项目开发中,有个需求是mini-combobox的下拉框显示学年,是个固定的范围:2000-2099学年,原来的做法是直接调用字典,传值,现在就需要自己写一段SQL来实现,给下拉框一个url让自动加载: 主要写一个这段SQL:with t as(select rownum rn from dual connect by rownum<=3000 )select * from t where原创 2017-07-17 09:34:45 · 4408 阅读 · 0 评论 -
oracle nvl
NVL函数NVL(EXP1,EXP2) (1)NVL函数允许你在一个查询中使用一个字符串来替代null,如果EXP1是null,那么就会返回EXP2,如果EXP1非空,NVL就会返回EXP1 (2)参数EXP1,EXP2可以时任何数据类型,如果他们的数据类型不相同,则会: a.如果exp1是字符数据,oracle数据库将会在比较之前把exp2转为exp1的数据类型,最后会返回exp1的字符原创 2017-06-28 20:41:55 · 1642 阅读 · 0 评论 -
oracle decode函数
decode(exp,search,result,default); (1)decode函数会把exp与每一个search做比较,如果相等,则返回result,如果没有相等的,就返回default值,如果default不写,默认返回null (2)decode函数所实现的功能,case when exp then result else result2 end也是可以实现的 (3)我在项目原创 2017-06-28 20:09:38 · 430 阅读 · 0 评论 -
oracle mod函数
mod(m,n) (1)MOD返回m除以n的余数,如果n是0,返回m。 (2)这个函数以任何数字数据类型或任何非数值型数据类型为参数,可以隐式地转换为数字数据类型。 Oracle用最高的数字优先级来确定参数,隐式地将剩下的参数转换为该数据类型,并返回数据类型。原创 2017-06-28 20:11:32 · 65547 阅读 · 0 评论 -
oracle trunc
trunc(n,m) (1)可以传一个参数,也可以传两个参数,传一个参数n的时候,代表截取到数字的整数部分,不存在四舍五入;如果传了m,就需要截取到数字的m 位小数,如果小数位数小于m,则有多少截取多少。 (2)这个函数以任何数字数据类型或任何非数值型数据类型为参数,可以隐式地转换为数字数据类型。如果省略了m,那么函数将返回与参数的数值 类型相同的数据类型。如果包含m,则函数返回NUMB原创 2017-06-28 20:13:54 · 845 阅读 · 0 评论 -
oracle case表达式
CASE表达式 (1)CASE表达式可以让你可以在SQL中使用类似于if… then…else的逻辑而不需要调用程序 (2)一个简单的CASE表达式,Oracle将会搜索第一对when…then来与表达式做匹配,如果匹配了则返回表达式的值。如果没有任何一个when…then符合条件,将会执行 ELSE后面的语句,oracle将会返回else表达式的值。否则,oracle将会返回原创 2017-06-28 20:17:19 · 8360 阅读 · 0 评论 -
mysql的LIMIT子句
4.LIMIT子句(1)可以被用于强制 SELECT 语句返回指定的记录数(2)接受一个或两个数字参数。参数必须是一个整数常量。(3)如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。SELECT * from t LIMIT 1;#返回第一条记录select * from t LIMIT 3,6;#返回六条记录,从第四条开始计算(4)Lim...原创 2018-07-21 10:38:45 · 1949 阅读 · 0 评论 -
mysql字符串连接concat和concat_ws函数
5.CONCAT(str1,str2,…) 函数:字符串连接(1)返回结果为连接参数产生的字符串。(2)如有任何一个参数为NULL ,则返回值为 NULL。(3)有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。(4)如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。(5)一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式...原创 2018-07-21 10:39:35 · 845 阅读 · 0 评论 -
ARTS Share9 Oracle中的Union、Union All、Intersect、Minus
这篇文章说一个关于ORACLE中的UNION、UNION ALL、INTERSECT、MINUS的解释和用法:先创建一张TABLE,用来做实验:建表语句如下所示:create table student(id int primary key,name nvarchar2(50) not null,score number not null);insert into studen...原创 2019-05-18 15:18:55 · 256 阅读 · 0 评论 -
ARTS Share7 Oracle数据库中插入timestamp字段的值
说一下怎么向Oracle中插入一个timestamp类型的数据,有的人知道sysdate,但是不一定知道CURRENT_TIMESTAMP。接下来我就说一下方法:向Oralce中的timestamp字段插入值:INSERT INTO tableName (timestamp_value) values(TO_TIMESTAMP(:TS_VAL,'yyyy-MM-dd HH24:mi:ss'...原创 2019-05-15 14:18:06 · 664 阅读 · 0 评论 -
ARTS Tip6 ORA-01843 无效的月份
在项目开发中,遇到一个问题,是在做insert操作的时候抛出的异常:ORA-01843:无效的月份于是乎,去查找到底是哪里出了这个问题,问题定位:一定是表结构字段类型是日期类型或者时间戳类型的字段中出现了问题,然后进行排查。首先声明一下,我的实体中的timestamp和Date类型,我都在java中用String来表示,那么问题来了?经过排查和以往经验,其中关于Date的数据库字段是不存在问...原创 2019-05-15 14:17:14 · 2217 阅读 · 0 评论 -
ARTS Tips8 解决Oracle客户端HTTP占用8080端口
因为换了新的电脑,所以需要重新安装一系列的软件,配置环境变量什么的。这里主要说一下安装Oracle客户端和PL/SQL中遇到的问题以及解决的方法。oracle客户端还是用的原来的安装包,在安装的时候到最后一步你会发现提示里面有这么一句话ORALCE 监听 HTTP 8080端口,所以当你Oracle安装好以后,那么你的8080端口就已经被占用了,此时如果你的tomcat还是8080端口,IDEA...原创 2019-05-09 09:31:57 · 383 阅读 · 0 评论 -
ARTS Share4 mysql中autocommit
MySQL中的事务(自动提交,显示和隐式),在MySQL中事务控制数据操作语句以确保它们是原子的。什么叫做原子的,也就是说这个事务要么成功,要么失败。什么时候算事务成功或者失败?当向数据库事务发送commit命令的时候,说明事务提交成功;相反,如果向数据库事务发送rollback命令,那么就说明此次的事务提交失败,所有执行过的SQL,数据会进行回滚到最初的状态。当对数据库数据进行修改的时候,...原创 2019-04-11 09:48:00 · 181 阅读 · 0 评论 -
oracle instr函数
今天来分享一个oracle中的函数:instrinstr函数种类:instr函数系列有(instr,instrb,instrc,instr2,instr4),这些函数主要是使用字符来搜索一个字符串的子串,并且返回该字符串中指定的子串的字符第一次出现的位置。函数的不同之处在于它们如何确定要返回的子字符串的位置。instr:默认按照输入的字符集来计算使用的字符串的长度。instrb:使用字节来...原创 2019-03-12 14:46:05 · 8874 阅读 · 0 评论 -
mysql一行数据拆分为多行数据
最近有个项目中有个问题想在sql中解决,使用的是mysql并不是很熟悉,解决的问题是:将该条数据按照TXYMZL拆分为两条数据,我上网也查了一下,看到普遍是有两种做法:第一种:写存储过程来解决这个问题,但是用mysql一般不推荐使用存储过程,因为以后数据库版本升级或者数据迁移比较困难。第二种:使用mysql自带的一张叫做help_topic的自增序列表,可以解决这个问题。(用该方法的时候,...原创 2018-12-14 15:28:00 · 13678 阅读 · 2 评论 -
replace null or blank with 0 用空或者null来被0替换
在开发中遇到一个问题,在mysql中字段都为varchar型,但是有的没有值查出来是NULL,有的查出来是空。先来看一下mysql中的NULL和empty String的区别:1.A NULL value represents the absence of a value for a record in a field (others softwares call it also a miss...原创 2018-10-11 16:16:02 · 1857 阅读 · 0 评论 -
sql server中的top在oracle中如何实现
最近的一个项目是一个统计学的项目,主要是报表,图表的处理,还有一些导入导出,下载,生成PDF等的模块功能,原系统采用的是C#语言,数据库是SQL SERVER,C/S结构,如今我们改善为B/S结构的,通过访问服务器来进行网页的操作,方便也符合现在人的使用习惯。 在系统改造的过程中有一个问题,就是原SQL是使用了sql server中的top,表示取查询结果的前几条数据,然后我查了一下可以使用or...原创 2018-08-27 22:01:51 · 1229 阅读 · 0 评论 -
Oracle中使sql求两个日期之间的所有日期
比如,两个日期是2018-08-27和2018-08-30,要求27,28, 29,30这四天的日期,我们可以采用下面的SQL来求得:--oracle 求两个日期之间的所有日期SELECT TO_CHAR((TO_DATE(KSRQ, 'yyyy-MM-dd') + (ROWNUM - 1)), 'yyyy-MM-dd') DT FROM DUALCONNECT BY ROWNUM...原创 2018-08-27 21:48:58 · 4725 阅读 · 0 评论 -
mysql函数str_to_date字符串转日期
14.STR_TO_DATE(str,format)字符串转日期函数(1)str:字符形式的日期(2)format:格式化样式STR_TO_DATE('1992-04-12',"%Y-%m-%d") 输出:1992-04-12(日期形式)原创 2018-08-27 21:45:53 · 3353 阅读 · 0 评论 -
mysql函数ceil和ceiling
CEILING(X) 或 CEIL(X)该函数返回的最小整数值,但不能小于X。 SELECT CEILING(3.46);#4 SELECT CEIL(-6.43);#-6原创 2018-07-21 10:47:25 · 7048 阅读 · 1 评论 -
mysql函数类型转换cast
cast函数类型转换CAST函数语法规则是:Cast(字段名 as 转换的类型 ),其中类型可以为:CHAR[(N)] 字符型 DATE 日期型DATETIME 日期和时间型DECIMAL float型SIGNED intTIME 时间型...原创 2018-07-21 10:46:48 · 709 阅读 · 0 评论 -
mysql截取字符串函数left和right和substring和substring_index
15.截取字符串(1)从左开始截取字符串 left(str,length)str:要截取的字符串length:要截取的长度select left(t.szzbm, 6) from T_AEFIXX t(2)从右开始截取字符串 right(str,length)str:要截取的字符串length:要截取的长度select right(t.szzbm, 6) from T_AEFIXX...原创 2018-07-21 10:46:08 · 1262 阅读 · 0 评论 -
mysql函数group_concat和FIND_IN_SET
11.group_concat([distinct] 要连接的字段 [order by 排序字段 ASC/DESC] [Separator '分隔符'] )函数(1)group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。(2)group_concat()函数需要与...原创 2018-07-21 10:44:26 · 985 阅读 · 0 评论 -
mysql函数IFNULL和NULLIF和ISNULL
10.IFNULL和NULLIF和ISNULL(1)IFNULL(A,B)IFNULL(fieldA,fieldB),意义是当字段fieldA是NULL时取fieldB,不是NULL时取fieldA的值。(2)isnull(expr)如expr为null,那么isnull() 的返回值为 1,否则返回值为 0。 (3)NULLIF(expr1,expr2)如果expr1=expr2成立...原创 2018-07-21 10:43:25 · 769 阅读 · 0 评论 -
mysql时间差函数datediff和TIMESTAMPDIFF
7.时间差函数:datediff(date1,date2)(1)select datediff(now(), now());#0(2)select datediff('2018-04-22 23:59:00', '2018-04-20 00:00:00');#28.时间差函数:TIMESTAMPDIFFselect TIMESTAMPDIFF(DAY, '2018-04-20 00:00:...原创 2018-07-21 10:40:27 · 2377 阅读 · 0 评论 -
oracle replace
REPLACE函数 (1)REPLACE函数将会返回在原有字符中被搜索到的字符会被指定的替换字符所替换后字符。如果指定的替换字符被省略或者为null,所有出现的搜索字符就会被移除,如果 搜索字符是null,那么原来的字符就会被返回。 (2)对于搜索字符和替换字符,包括原来字符,可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或者NCLOB中的任何一个。只是字符的数原创 2017-06-28 20:31:09 · 554 阅读 · 0 评论 -
oracle length
LENGTH函数 (1)LENGTH函数返回字符的长度。LENGTH计算定义的字符的长度。LENGTHB使用字节来计算。LENGTHC使用unicode来计算,LENGTH2使用UCS2编码来计算,LENGTH4使用UCS4 来计算 (2)字符可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或者NCLOB中的任何一个。返回值的数据类型是NUMBER类型,如果一个字原创 2017-06-28 20:29:31 · 11649 阅读 · 0 评论 -
Oracle中保留两位小数
在最近的项目开发中,有个业务需求是界面显示的数字需要保留两位小数,目前我想到的解决方法有两种: (1)在写SQL的时候,直接保留两位小数 (2)在java代码里面将查询出来的数进行格式化处理,保留两位小数 先说第一种方案:在SQL中的处理 我使用的oracle数据库,所以有3个函数可以选择,分别是: (1)ROUND(A/B,2) ROUND()函数是会将计算结果进行四舍五入的,如果所需原创 2017-06-02 08:23:47 · 225872 阅读 · 11 评论 -
ORACLE中的比较运算符
在ORALCE中有以下9中比较运算符; (1)等于= 可以用在where条件后面,比如: (2)不等于<> 或者!= (3)大于> (4)小于< (5)大于或等于>= (6)小于或等于<= (7)ANY 使用ANY将一个值与某个列表中的任何值进行比较,此时必须在ANY之前添加一个(1)-(6)比较运算符中的一个SELECT customers WHERE custome原创 2016-10-21 20:17:56 · 31254 阅读 · 2 评论