数据库
khx0910
这个作者很懒,什么都没留下…
展开
-
替换或删除指定字符串:replace函数
REPLACE函数完成替换功能,如果不指定替换的内容将会删除与之匹配的内容。select ‘D7120-101603-000’ as t$item ,replace(‘D7120-101603-000’,’-1’) as sc, --删除其中-1的内容replace(‘D7120-101603-000’,’-1’,’-J’) as th --替换其中-1的内容为-jfrom dual;...原创 2020-05-12 14:16:30 · 952 阅读 · 0 评论 -
从指定位置截取特定长度字符串:substr(字段a,截取起始位置m,截取长度n)
(1)SQL中substr函数的第二个参数是“-6”,表示从字符串后面向前数第6个字符开始,再读取4个字符。这里构造的结构和上面的结果相同,可谓殊途同归是也。这里之所以使用到了rtrim函数,是为了消除字符串尾部空格对结果的影响。select FIRST_NAME, substr(rtrim(FIRST_NAME),-6,4) substr from t;FIRST_NAME SUBSTRSecooler cool(2)SUBSTR函数的第三个参数可以为空,表示从截取开始的位置一直到字符串尾部的意原创 2020-05-12 14:15:23 · 3593 阅读 · 0 评论 -
将字符a翻译成字符b:translate函数
1)将“H”翻译成“S”、将“O”翻译成“e”、将“U”翻译成“c”sec@ora10g> select FAMILY_NAME, translate(FAMILY_NAME,‘HOU’,‘Sec’) translate from t;FAMILY_NAME TRANSLATEHOU Sec2)翻译针对相同位置的字符串:同一个字符串以最先对应的位置为准,这是与replace函数的区别,这就是为什么下面的SQL为什么没有把“Secooler”转换为“Shengwen”,而是SHENNWHNse原创 2020-05-12 14:14:05 · 136 阅读 · 0 评论 -
获取指定子字符串所在的位置:instr(字段a,子字符串)函数
语法是:INSTR (string , substring [, position [, occurrence ] ])INSTR函数可以得到子字符串(当然包含单个字符)在字符串中的位置,返回的是数字。1)得到字母“o”在FIRST_NAME字段第一次出现的位置sec@ora10g> select FIRST_NAME, instr(FIRST_NAME,‘o’) instr from t;FIRST_NAME INSTRSecooler 42)从字符串的第5个字符开始查找,第一次出现字母原创 2020-05-12 14:13:00 · 1306 阅读 · 0 评论 -
往左或往右指定字符填充字符串到指定长度:LDAP和RDAP函数
LPAD和RPAD函数可以完成用特定字符填充字符串到指定长度的目的。如果不指定填充的字符,则默认用空格进行填充ldap(字段a,指定长度,填充字符)select concat(‘ZDP’,LPAD(‘1’,5,‘0’)) as tc from dualZDP00001...原创 2020-05-12 14:10:02 · 393 阅读 · 0 评论 -
删除左侧或右侧重复出现的某字符:ltrim和rtrim函数
表达式:ltrim(字段a,需删除的字符)select ltrim(‘PP10088’,‘P’),rtrim(‘PP10088’,‘8’) from dual10088 PP100如果LTRIM和RTRIM函数不使用第二个参数,则实现的功能是去除字符串左侧( LTRIM )或右侧( RTRIM )出现的空格...原创 2020-05-12 14:09:06 · 324 阅读 · 0 评论 -
Oracle 自增序列seq_XXX的创建和使用
–查看序列select * from user_sequences;–当前用户下创建的序列select * from all_sequences;–查看所有序列–创建序列/*create sequence 序列名 [可选参数](序列名常定义为‘seq_XXX’的形式,创建序列不能使用replace)可选参数说明:increment by:序列每次增加的值,负数表示递减,缺省值为1;start with:序列的初始值,缺省值为1;maxvalue:序列可生成的最大值,缺省值为nomaxva原创 2020-05-12 14:07:51 · 909 阅读 · 0 评论 -
Oracle中显式游标cursor的创建和使用
(1) 对于从数据库中提取多行数据,就需要使用显式Cursor。显式Cursor的属性包含:游标的属性 返回值类型 意 义%ROWCOUNT 整型 获得FETCH语句返回的数据行数%FOUND 布尔型 最近的FETCH语句返回一行数据则为真,否则为假%NOTFOUND 布尔型 与%FOUND属性返回值相反%ISOPEN 布尔型 游标已经打开时值为真,否则为假(2) 对于显式游标的运用分为四个步骤: 定义游标—Cursor [Cursor Name] IS; 打开游标—Open [Curs原创 2020-05-12 14:06:39 · 448 阅读 · 0 评论 -
Oracle中no_data_found异常处理:替代count(*)>0的前期判断
遍历某个表中的数据,或通过select into 给某个变量赋值时,下面这种情况会抛出no_data_found异常,以前我会用select count(pid) into countPerson进行前期判断,判断countPerson 是否大于0,这样不仅增加了代码的冗余,还是代码可读性变差。通过下面处理让代码变得清爽:begin exception then end;(存储过程等中可以出现多个begin,end;也可以相互嵌套)Begin–可能出现异常SELECT pid INTO temp_p原创 2020-05-12 14:04:53 · 632 阅读 · 0 评论 -
日期时间时区转换函数new_time(日期字段,自时区,至时区)
–PST美国太平洋标准时间,GMT格林威治标准时间,NEW_TIME(t$idat,‘PST’,‘GMT’)得出idat在pst对应的gmt时间select a.t$idat,NEW_TIME(t$idat,'PST','GMT'),to_char(new_time(t$idat,'PST','GMT'),'HH:mi'),--时分to_char(new_time(t$idat,'PST','GMT'),'yyyy'),--年份to_char(new_time(t$idat,'PST','GMT')原创 2020-05-12 14:00:51 · 1074 阅读 · 0 评论 -
字符转换to_char函数与日期转换to_date函数
字符转换to_char函数与日期转换to_date函数多种日期表示格式:YYYY:四位表示的年份YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪MM,mm:0112的月份编号MONTH:九个字符表示的月份,格式显示为一月MON:三位字符的月份缩写 ,格式显示为一月WW:一年中的星期 ,02D:星期中的第几天DD:月份中的第几天DDD:年所中的第几天DAY:九个字符表示的天的全称,右边用空格补齐HH,HH12:一天中的第几个小时,12进制表示法HH24:一天中的第几个小时原创 2020-05-12 13:58:13 · 8297 阅读 · 0 评论 -
日期相隔月数计算MONTHS_BETWEEN
MONTHS_BETWEEN (date1, date2)用于计算date1和date2之间有几个月。 如果date1在日历中比date2晚,那么MONTHS_BETWEEN()就返回一个正数。如果date1在日历中比date2早,那么MONTHS_BETWEEN()就返回一个负数。如果date1和date2日期一样,那么MONTHS_BETWEEN()就返回一个0。 实验如下:SQL> select months_between(to_date(‘2014-3-21’,‘yyy原创 2020-05-12 13:53:42 · 1269 阅读 · 2 评论