在PLSQL, sql语句中 where 带有中文的查询条件查询不到数据
发现是PLSQL字符编码问题。解决办法就是设置一个系统环境变量就好了。右击“计算机”-“属性”-“高级系统设置”-“环境变量”,在系统变量下,“新建” 变量名:NLS_LANG;变量值:AMERICAN_AMERICA.AL32UTF8最后重启PLSQL就好了。

case when  简单case when(oracle推荐用decode更简单)   条件case when(mysql oracle只能用这种了)

-- mysql 有 'false'  'true'类型 (CASE WHEN user_status=0 THEN 'false' ELSE 'true' END) AS  "isNormal"
-- oracle 没有boolean'类型    使用 0 1表示(CASE WHEN FLOOR(SYSDATE - B.EFFDT) <![CDATA[<=]]> 30 THEN 1 ELSE 0 END) AS "isNewFlag"-- 1. 简单case when (相当于 oracle的 decode函数)
(case b.HRCS_COMPENSATION_COM WHEN 1 THEN 'COMP1-年基本工资'WHEN 2 THEN 'COMP2-年度固定薪酬' WHEN 3 THEN 'COMP3-年度总现金薪酬'WHEN 4 THEN 'COMP4-年度直接薪酬' ELSE 'COMP5-年度整体薪酬' end) as hrcsCompensationComp
--  2.条件 case when ( case  when 是连着写的, 在 oracle中decode只能处理简单的case when  有条件判断, 请使用oracle的 case when 和mysql 条件case when 一样)
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
mybatis oracle日期的TO_CHAR(B.EFFDT, 'yyyy-mm-dd hh24:mi:ss') AS "effdt",  即便数据库存的 年月日, 也要有hh24:mi:ss,
最后用spring的注解来转为 2019-01-01, 如下代码即可  要指定时区,要不展示的少一天
@JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")所以,不涉及日期的计算, 还是 推荐 直接将date 定义为 stringORACLE里面是没有 true false 之分的, 使用 数字 1 0 或'1'  '0' 来表示 true false都可以
oracle里面的decode函数, 只是枚举, 不能做 逻辑判断, 所以, 要做逻辑判断,还是用 case when
如下写法是oracle 带order 排序 分页查询效率最高的(注意是3个子查询, 推荐使用)
传入 (pageNum-1 )* pageSize 和  pageNum * pageSize
-- <= pageNum * pageSize    后面写  > (pageNum-1 )* pageSize
--rownum关键字:oracle对外提供的自动给查询结果编号的关键字,与每行的数据没有关系。<!-- 带order 排序的分页查询,    入/离职 职员工公告的sql--><!--入/离职 职员工公告的sql-->
<!--入/离职 职员工公告的sql--><select id="getEntryAnnouncement" resultType="com.hrp.persist.employee.myConsole.model.EntryDimissionAnnouncement">SELECT * FROM (SELECT ROWNUM AS ROWNO,TAB1.* FROM (SELECTTO_CHAR(B.EFFDT, 'yyyy-mm-dd') AS "effdt",B.NAME_FORMAL AS "nameFormal",B.CRC_DEPT_DESC AS "crcDeptDesc",decode(B.ACTION,'XFR',1,0) AS "isTransfer",(CASE WHEN FLOOR(SYSDATE - B.EFFDT) <![CDATA[<=]]> 30 THEN 1 ELSE 0 END) AS "isNewFlag"FROM PS_MANGO_CRC_EMP_RL_TBL BWHERE 1 = 1 AND B.CRC_RL_FLAG = #{crcRlFlag}<if test="keyword != null and keyword!= ''">AND (B.NAME_FORMAL LIKE '%${keyword}%' OR B.CRC_DEPT_DESC LIKE '%${keyword}%')</if> ORDER BY B.EFFDT DESC) TAB1 WHERE ROWNUM <![CDATA[<=]]> #{endSize}) TAB2 WHERE TAB2.ROWNO <![CDATA[>]]> #{beginSize}</select><!-- 查询总数 --><select id="getEntryAnnouncementCount" resultType="java.lang.Integer">SELECT COUNT(1)FROM PS_MANGO_CRC_EMP_RL_TBL BWHERE 1 = 1 AND B.CRC_RL_FLAG = #{crcRlFlag}<if test="keyword != null and keyword!= ''">AND (B.NAME_FORMAL LIKE '%${keyword}%' OR B.CRC_DEPT_DESC LIKE '%${keyword}%')</if></select>
--如下写法是oracle 不带order排序的分页查询(注意是2个子查询,推荐使用)SELECT *FROM (SELECT ROWNUM AS ROWNO, B.*, BD.PRICEFROM BOOK BLEFT JOIN BOOK_DETAIL BDON B.ID = BD.IDWHERE ROWNUM <= 10) TAB2WHERE TAB2.ROWNO > 0;
--PL/SQL可视化界面创建表结构,tools-export tables导出表结构,注意手动加 ; 才可以创建表和创建索引的sql一起执行1.字段不要使用char(20), 应该定义为 VARCHAR2(20), 因为char(10)为定长字符串, 存入 张三, 会自动补空格2.oracle日期类型中没有datetime类型Date类型的数据可以显示到年月日,也可以显示到年月日时分秒,主要看存储数据的精确度--2019/11/11  TO_DATE在使用中 --  那么后面的也是 -- 长度一样
INSERT INTO PS_CRC_EMP_RL_TBL
VALUES('R', TO_DATE('2019-11-11', 'yyyy-mm-dd'), '置地', '李四五', '1000083');--2019/12/25 14:11:28
INSERT INTO PS_CRC_EMP_RL_TBL
VALUES('R', SYSDATE, '置地', '李四六', '1000083');3.mysql中 有 date  datetime的区分,date存年月日, datetime存 年月日时分秒, timestamp是时间戳,在定义update字段时,可以使用(注意勾选随mysql系统时间更新此字段)create table BOOK
(id          NUMBER not null,name        VARCHAR2(20),create_time DATE
);
alter table BOOKadd constraint PK_ID primary key (ID);INSERT INTO book(ID, NAME , create_time) VALUES(1, '张三', to_date('2014-02-14 20:47:00','yyyy-mm-dd hh24:mi:ss'));
COMMIT;
--必须将 前台传入的 字符用to_date 转为 oracle日期,才可以insert成功
select to_date('2019-03-16 13:13:13', 'yyyy-mm-dd hh24:mi:ss') from dual;INSERT INTO book(ID, NAME , create_time) VALUES(1, '张三', to_date('2014-02-14 20:47:00','yyyy-mm-dd hh24:mi:ss'));
COMMIT;-- between 开始时间 and 结束时间  也要用 to_date
SELECT * FROM book b WHERE b.create_time BETWEEN to_date('2019-10-20 20:47:00','yyyy-mm-dd hh24:mi:ss') AND
to_date('2019-10-22 20:47:00','yyyy-mm-dd hh24:mi:ss');--mybatis查询时间需要格式化为日期字符串
SELECT to_char(SYSDATE, 'yyyy-mm-dd hh24:mi:ss') datetime FROM dual;

mybatis对 小于等于  进行转义   <![CDATA[<=]]> 30

mybatis oracle日期的TO_CHAR(B.EFFDT, 'yyyy-mm-dd hh24:mi:ss') AS "effdt",  即便数据库存的 年月日, 也要有hh24:mi:ss, 
不写的话,用如下注解转json会报错
@JsonFormat(pattern = "yyyy-MM-dd", locale = "zh", timezone = "GMT+8")

调整plsql开发工具的背景色

PrefAutomaticStatistics=True
SelectedStatNames=
FixedHistory=24574443451744154505438738534343457743474469483146013315334132553361321133493423317734273325341531694603502933593465483547335015
=25814791464147954661476732094723470147274593469947253439346531233485314333933467310935033513347535494983464132273109468749214595
=2121
AutoCommitSQL=True
AutoExecuteSQL=False
AutoSelectSQL=True
NumberFieldsToChar=False
DateFieldsToChar=False
QueryResultStyle=1
QueryResultCount=20
NullValueColor=26367
MNullValueColor=6723891
AltRowColor=15073253
AltRowColorEnabled=True
KeywordsEnabled=True
KeywordsBold=True
KeywordsItalic=False
KeywordsColor=16711935
KeywordsBkg=0
CommentEnabled=True
CommentBold=True
CommentItalic=True
CommentColor=16776960
CommentBkg=0
StringsEnabled=True
StringsBold=True
StringsItalic=False
StringsColor=32768
StringsBkg=0
NumbersEnabled=True
NumbersBold=True
NumbersItalic=False
NumbersColor=32768
NumbersBkg=0
SymbolsEnabled=True
SymbolsBold=True
SymbolsItalic=False
SymbolsColor=26367
SymbolsBkg=0
CustomEnabled=True
CustomBold=True
CustomItalic=False
CustomColor=65280
CustomBkg=0
KeywordsCase=1
AutoReplaceEnabled=True
AutoReplaceFilename=D:\java\shortcuts.txt
BeautifierOptionsProgWindow=False
BeautifierOptionsTestWindow=False
BeautifierOptionsSQLWindow=True
BeautifierOptionsRepWindow=False
BeautifierOptionsPlanWindow=False
BeautifierAfterCreating=True
BeautifierAfterLoading=True
BeautifierBeforeCompiling=True
BeautifierBeforeSaving=True
BrowserFontName=Segoe UI
BrowserFontCharset=1
BrowserFontColor=0
BrowserFontSize=12
BrowserFontBold=False
BrowserFontItalic=False
BrowserBkg=10079487
GridFontName=Segoe UI
GridFontCharset=1
GridFontColor=0
GridFontSize=12
GridFontBold=False
GridFontItalic=False
GridBkg=-16777211
EditorFontName=宋体
EditorFontCharset=0
EditorFontColor=16776960
EditorFontSize=14
EditorFontBold=False
EditorFontItalic=False
EditorBkg=0
SpecialSpaceChar=183
SpecialTabChar=187
SpecialBreakChar=182
MainFontName=Segoe UI
MainFontCharset=1
MainFontSize=9[KeyConfiguration]
File / Open / New / SQL Window=16465
File / Open / New / Command Window=16469
File / Save / Save=16467
File / Close / Close=16471
File / Application / Exit=32883
Edit / Clipboard / Cut=16472
Edit / Clipboard / Copy=16451
Edit / Clipboard / Paste=16470
Edit / Text / Undo=16474
Edit / Text / Redo=24666
Edit / Text / Select All=16449
Edit / Text / Recall Statement=16453
Edit / Text / Macro=123
Edit / Text / Macro / Record=122
Edit / Search / Find  Replace=16454
Edit / Search / Find Next=16460
Edit / Search / Find Previous=24652
Edit / Search / Replace=16464
Edit / Search / Find Matches=16461
Edit / Selection / Indent=16457
Edit / Selection / Uppercase=24665
Edit / Selection / Lowercase=24664
Edit / Selection / Comment=16575
Edit / Selection / Uncomment=24767
Edit / Navigation / Go to Line=16455
Edit / Breakpoints / Toggle=16450
Session / Action / Execute=119
Session / Action / Commit=121
Session / Action / Rollback=8313
Session / Action / Break=8219
Tools / Source / Explain Plan=116
Tools / Source / Code Assistant=32959
View / Windows / Full Screen=16506
Help / Oracle / Oracle HTML Manuals=112
Window: Next Window=16393
Window: Previous Window=24585
Window: Next Tab page=16456
Window: Previous Tab page=24648
Editor: Start of Document=16417
Editor: End of Document=16418
Editor: Start of Line=36
Editor: End of Line=35
Editor: Delete Line=16460
Editor: Delete Next Word=16430
Editor: Delete Prev Word=16392
Editor: Word Left=16421
Editor: Word Right=16423
Editor: Set Bookmark=16459
Editor: Navigate Back=32805
Editor: Navigate Forward=32807
Editor: Font size increase=16491
Editor: Font size decrease=16493
Editor: Font size 100%=16480
Debug: Start debugger=120
Debug: Run=16466
Debug: Step Into=16462
Debug: Step Over=16463
Debug: Step Out=16468
SQL Window: Previous SQL=16422
SQL Window: Next SQL=16424
SQL Window: Fetch next page=32802
SQL Window: Fetch last page=32803
SQL Window: Execute current statement=16503
Ribbon Tab: File=32838
Ribbon Tab: Project=32848
Ribbon Tab: Edit=32837
Ribbon Tab: Session=32851
Ribbon Tab: Tools=32852
Ribbon Tab: Configure=32835
Ribbon Tab: View=32854
Ribbon Tab: Help=32840
Ribbon Tab: Plug-Ins=32856


新建一个 shortcuts.txt 放到D:\java\shortcuts.txt, 内容如下i=INSERT
u=UPDATE
s=SELECT * FROM
f=FROM
w=WHERE
o=ORDER BY
d=DELETE
df=DELETE FROM
sf=SELECT * FROM
sc=SELECT COUNT(*) FROM
sfu=SELECT * FROM FOR UPDATE
cor=CREATE OR REPLACE
p=PROCEDURE
fn=FUNCTION
t=TIGGER
v=VIEW
sso=SET serveroutput ON;

Oracle Client(客户端) 安装与配置

https://www.oracle.com/database/technologies/112010-win64soft.html

双击exe, 安装类型选择管理员,  下面界面按住shift,全选中文和英文

在登陆历史里设置如下, 可以不用密码直接登陆pl/sql

MANGO/MANGO@10.0.62.161/HR91DEV

NUMBER [ (p [, s]) ]p(精度): 1-38
s(小数位数): -84-127不指定p(整数)和s(小数)  即:number   省略()及()内的p,s, 表示允许范围的最大值, 都可以存储用于表示浮点数,其精度和小数位数都是oracle所能支持的最大,不指定小数 即:number(p)  即s=0表示整数,有效位数=p


--追加 小时, 分钟, 秒
SELECT to_date('2019-10-21 00:00:01','yyyy-mm-dd hh24:mi:ss') +23/24 +23/24/60+23/24/60/60 FROM dual;--oracle 查看一张表共有几个字段
select count(*) from user_tab_columns t where t.TABLE_NAME='表名/视图名(必须是大写才可以查询到!)'--写完一句sql,光标在最右边(如果不在最右边,你也可以end后,shift+home选中),
--你可以,shift+home选中 光标所在行的sql, f8执行即可--oracle的nvl()函数, 相当于mysql的ifnull()
select nvl (null, '0')  from  dual; --oracle的uuid 32位大写   mysql是 select uuid(); 32位小写且加4个短-
select sys_guid  from  dual;-- between 开始时间 and 结束时间  也要用 to_date
SELECT * FROM book b WHERE b.create_time BETWEEN to_date('2019-10-20 20:47:00','yyyy-mm-dd hh24:mi:ss') AND
to_date('2019-10-22 20:47:00','yyyy-mm-dd hh24:mi:ss');--mybatis查询时间需要格式化为日期字符串 记得tochar一定要起as 别名
SELECT to_char(SYSDATE, 'yyyy-mm-dd hh24:mi:ss') datetime FROM dual;后者字符在前面单词出现的位置(从1开始)  这里必须是单引号哦  from dual不能省略, 在mysql可以省略
select instr('helloworld','wo') from dual; --返回结果:6    即“w”开始出现的位置
select instr('helloworld','l',2,2) from dual;  --返回结果:4    也就是说:在"helloworld"的第2(e)号位置开始,查找第二次出现的“l”的位置select substr('123', 0, 2); --结果是: 12   从0脚标开始取2位先简单的介绍下oracle的substr函数和instr函数,后面我会用这2个函数模拟mysql的substring_index函数oracle和mysql都有concat函数, 将多个字段拼接  --oracle和mysql的 转大写, 转小写 函数是一样的
select lower('Q')  from  dual;
select upper('q')  from  dual;

ctrl+tab  alt+←/→ 都可以切换sql window窗口

文档注释的快捷键设置, 不是单行注释的快捷键   --我的注释

ctrl+q打开sql window

ctr+u打开 command window

PLSQL怎样导出oracle表结构和数据

1.将.sql文件拖动到pl/sql的brower或sql window空白处,会自动打开sql文件,点击f8执行即可。

也可以点击下图的图标,打开.sql文件,点击f8执行

2.ctrl+u 打开command window窗口, 执行 .sql文件

3.export user objects  包括 表结构,表数据,函数, 存储过程,触发器,视图等

4.export tables 仅导出表结构 和 表数据

点击解锁, select for update,点击锁, 修改完, 点 对号,保存到本地内存中, 点击 绿色提交事务

plsql中,你写 select cid(字段名小写或大写, oracle都可以找到表中的字段) from table

oracle查询 as 驼峰命名(注意双引号不能少), 和 mybatis 返回的vo对象 映射         sql美化按钮,可以将 小写 表名 美化为 大写 的表名

如何查看一个表的表结构:字段定义 和 注释comment

1.  select * from pm_guideline;  ctr+鼠标左键 表名, 就会出现小手, 点击进入表结构

2.打开命令窗口-》(命令窗口或者叫"command window")不是"sql window/sql 窗口"。然后用命令desc tableName回车。如desc book 回车即可查看表结构, select * from pm_guideline;  ctr+鼠标左键 表名, 就会出现小手, 点击进入表结构

oracle plsql 使用相关推荐

  1. 【转】oracle PLSQL基础学习

    [转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...

  2. mysql plsql循环语句吗,Oracle PLSQL 在游标中用while循环实例程序

    Oracle PLSQL 在游标中用while循环实例程序 Oracle PLSQL 在游标中用while循环实例程序 Oracle PLSQL 在游标中用while循环实例程序 declare cu ...

  3. lower() oracle,PLSQL LOWER用法及代码示例

    PLSQL LOWER函数用于将指定字符串中的所有字母都转换为小写.如果字符串中的字符不是字母,则不受此功能的影响. 要转换的char可以是任何数据类型,例如CHAR,VARCHAR2,NCHAR,N ...

  4. Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案

    Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案 参考文章: (1)Oracle PLSQL 导出数据table xx ...

  5. oracle中plsql块的结构,oracle plsql的结构

    变量声明部分(没有变量可以不写declare) begin 执行部分 exception 异常处理部分 end *:declare 和 exception部分是可选的 (1)PL/sql中变量的定义 ...

  6. oracle sum函数返回类型,Oracle / PLSQL SUM函数

    这个Oracle教程解释了如何使用Oracle / PLSQL SUM函数. SUM(x) 添加x中的所有值,并返回总和. SUM函数对一组行进行操作,并返回一行输出. Null值被SUM函数忽略.您 ...

  7. oracle提交数据按键,Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link)...

    Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link) 有没有办法只通过数据库链接而不是当前会话的数据提交在表上插入/更新的 ...

  8. Oracle/PLSQL Repeat Until Loop

    Oracle/PLSQL: Repeat Until Loop Oracle doesn't have a Repeat Until loop, but you can emulate one. Th ...

  9. Oracle/PLSQL Case Statement

    Oracle/PLSQL: Case Statement In Oracle 9i, you can use the case statement within an SQL statement. I ...

  10. Oracle/PLSQL FETCH Statement

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Orac ...

最新文章

  1. Faster RCNN参数详解
  2. Netfilter 详解
  3. t30智能插座怎么设置_如何设置ConnectSense智能插座
  4. Sql字符串函数(1)
  5. 哦!数组还能这么用,学到了!
  6. php 双问号 语法,JS 新语法「可选链」「双问号」已进入 Stage 3
  7. java钓鱼_基于java的鱼友约钓鱼的系统
  8. 读“游戏之旅——我的编程感悟”:难得的休闲读物
  9. 你所不知道的@ComponentScan注解用法之包路径占位符
  10. TCP的粘包问题以及数据的无边界性
  11. 双拼输入法是个啥以及我是如何学会使用它的
  12. 协方差矩阵的定义性质与python实现
  13. 朱志坤计算机学院,厦门工学院第七届田径运动会竞赛规程.doc
  14. 解决Xcode真机测试时ineligible devices的问题
  15. HEVC亮度分量帧内预测模式代码详解
  16. 只有mdf文件和ldf文件--怎么恢复数据库
  17. USACO-Healthy Holsteins
  18. 如何用PYTHON代码写出音乐
  19. JoyStick游戏杆编程实践
  20. 用积极的心理暗示赶走坏心情

热门文章

  1. 1T笔记本硬盘 嘿嘿
  2. 基于全卷积神经网络的图像分割方法详解(二)
  3. Flutter中网络图片加载和缓存源码分析,踩坑了
  4. HALCON示例find_aniso_shape_model 注释翻译与解析
  5. au如何将人相似_【出彩营销人】如何将地产小白培养成开单达人~
  6. 人工蜂群算法(ABC)
  7. 图像处理(Image Processing) ---------- 对比拉伸 (Contrast Stretching)(C#实现)
  8. 用Unity3D开发2D小游戏 Flappy Bird
  9. 遥感栅格标签制作:矢量转栅格
  10. Ubuntu 开放端口