简单实用的sql小技巧(第二篇)(r3笔记第86天)
ASCII和CHR 在平时的工作中,可能会在sql或者pl/sql块中嵌入特殊字符,比如空格,回车之类。这个时候可以使用ascii和chr来做字符和ascii码的转换。 比如我们想得到字母a对应的ascii码,可以使用ascii来实现。
SQL> select ascii('a') from dual;
ASCII('A')
----------
97
如果反推,需要根据ascii码值来得到对应的字符,就可以使用chr
SQL> select chr(97) from dual;
CHR
---
a
关于ascii码对应的字符,总结的列表如下。对于前32个ascii码来说,是不可见字符。所以使用描述代替。这部分特殊字符在平时的工作中使用的地方还是比较多的。像回车符,换行符,空格都很常用。 用到的时候可以参考一下。
ascii码 |
对应的字符 |
ascii码 |
对应的字符 |
---|---|---|---|
0 |
null |
64 |
@ |
1 |
start of heading |
65 |
A |
2 |
start of text |
66 |
B |
3 |
end of text |
67 |
C |
4 |
end of transmission |
68 |
D |
5 |
enquiry |
69 |
E |
6 |
acknowledge |
70 |
F |
7 |
bell |
71 |
G |
8 |
backspace |
72 |
H |
9 |
horizontal tab |
73 |
I |
10 |
new line |
74 |
J |
11 |
vertical tab |
75 |
K |
12 |
new page |
76 |
L |
13 |
carriage return |
77 |
M |
14 |
shift out |
78 |
N |
15 |
shift in |
79 |
O |
16 |
data link escape |
80 |
P |
17 |
device control 1 |
81 |
Q |
18 |
device control 2 |
82 |
R |
19 |
device control 3 |
83 |
S |
20 |
device control 4 |
84 |
T |
21 |
negative acknowledge |
85 |
U |
22 |
synchronous idle |
86 |
V |
23 |
end of trans. block |
87 |
W |
24 |
cancel |
88 |
X |
25 |
end of medium |
89 |
Y |
26 |
substitute |
90 |
Z |
27 |
escape |
91 |
[ |
28 |
file separator |
92 |
|
29 |
group separator |
93 |
] |
30 |
record separator |
94 |
^ |
31 |
unit separator |
95 |
_ |
32 |
space |
96 |
` |
33 |
! |
97 |
a |
34 |
" |
98 |
b |
35 |
# |
99 |
c |
36 |
$ |
100 |
d |
37 |
% |
101 |
e |
38 |
& |
102 |
f |
39 |
' |
103 |
g |
40 |
( |
104 |
h |
41 |
) |
105 |
i |
42 |
* |
106 |
j |
43 |
+ |
107 |
k |
44 |
, |
108 |
l |
45 |
- |
109 |
m |
46 |
. |
110 |
n |
47 |
/ |
111 |
o |
48 |
0 |
112 |
p |
49 |
1 |
113 |
q |
50 |
2 |
114 |
r |
51 |
3 |
115 |
s |
52 |
4 |
116 |
t |
53 |
5 |
117 |
u |
54 |
6 |
118 |
v |
55 |
7 |
119 |
w |
56 |
8 |
120 |
x |
57 |
9 |
121 |
y |
58 |
: |
122 |
z |
59 |
; |
123 |
{ |
60 |
< |
124 |
| |
61 |
= |
125 |
} |
62 |
> |
126 |
~ |
63 |
? |
127 |
DEL |
DUMP 对于一些特殊字符,有些是不可见字符,如果在客户端查看根本判断不出来。这个时候一旦出现什么问题,可以根据dump来查看是否存在特殊字符。举个简单的例子。
create table test(id number,name varchar2(100));
insert into test values(1,'this is a test');
insert into test values(2,'this is a test'||chr(10));
commit;
SQL> col dump_name format a100
SQL> col name format a30
SQL> select *from test; --通过客户端查看,根本看不出区别来。一旦出现问题是很难查的。
ID NAME
---------- ------------------------------
1 this is a test
2 this is a test
SQL> select id,dump(name)dump_name from test; -使用dump来解析,最后的"10“就是不可见字符,是一个换行符。
ID DUMP_NAME
---------- ----------------------------------------------------------------------------------------------------
1 Typ=1 Len=14: 116,104,105,115,32,105,115,32,97,32,116,101,115,116
2 Typ=1 Len=15: 116,104,105,115,32,105,115,32,97,32,116,101,115,116,10
TO_CHAR (DATE)
关于to_char的使用,功能还是很强大的。看似简单的一个转换竟然能够实现很复杂的逻辑。
比如我们先得到当前的时间戳。
SQL> select to_char(sysdate,'yyyy--mm-dd hh24:mi:ss') now_date from dual;
NOW_DATE
------------------------------------------------------------
2014--12-16 17:46:39
得到这个月最后一天的信息,如果是在复杂的业务逻辑中判断能省去不少事。
SQL> select last_day(sysdate) from dual;
LAST_DAY(SYSDATE)
------------------
31-DEC-14
查看今天是这周的第几天。
SQL> select to_char(sysdate,'d') from dual;
TO_
---
3
查看今天是星期几。
SQL> select to_char(sysdate,'day') from dual;
TO_CHAR(SYSDATE,'DAY')
---------------------------
tuesday
SQL> select to_char(sysdate,'dy') from dual;
TO_CHAR(S
---------
tue
查看今天是一年中的第几天
SQL> select to_char(sysdate,'ddd') from dual;
TO_CHAR(S
---------
350
查看今天是这个月的第几天
select to_char(sysdate,'dd') from dual;
TO_CHA
------
16
查看今天是一年中的第几周
SQL> select to_char(sysdate,'ww') from dual;
TO_CHA
------
50
查看月份
SQL> select to_char(sysdate,'MM') from dual;
TO_CHA
------
12
select to_char(sysdate,'mm') from dual;
TO_CHA
------
12
今天属于当月的第几周。
SQL> select to_char(sysdate,'W') from dual;
TO_
---
3
- Castle 整合.NET Remoting
- 这三要素,让区块链技术成为颠覆世界的技术
- 代码实现 WordPress 反垃圾评论功能
- Flash/Flex学习笔记(39):弹性运动
- 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
- ASP.NET vNext 概述
- 丰富排版页面——为你的wordpress主题添加短代码形式美化框
- 开放式管理基础结构 OMI
- 人类设计了游戏和AI 2017年AI在游戏中打败了人类
- WordPress 代码实现相关文章(列表模式)功能
- 自动刷新页面
- Python语言被列入全国计算机等级考试科目中
- WordPress纯代码高仿 无觅相关文章 图文模式功能
- 各种序列化库的性能数据
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spark中的聚类算法
- 【Linux_Shell 脚本编程学习笔记六、shell的数值运算】
- Java自动化测试(adb常用命令 32)
- 前端学习计算机理论知识的好处
- 【Vue 学习笔记 一、Vue开发环境搭建】
- Vue 图片上传组件(base64 版):vue-upload-imgs
- 三、运行时的动态常量(学习笔记)
- Vue Cli 3 打包配置--自动忽略 console.log 语句
- git 常用命令介绍
- PAT (Basic Level) Practice (中文)1043 输出PATest (20 分)
- PAT (Basic Level) Practice (中文)1047 编程团体赛 (20 分)
- Vue中computed分析
- 半小时搞懂 HTTP、HTTPS和HTTP2
- RestPack Java实现Html转PDF文件
- 六、垃圾回收_判断对象是否存活算法_引用计数法详解