【SQL】字符型函数
1、 ASCII
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。
1) 返回与指定字符对应的ASCII码
SQL> select ascii('A') A,ascii('a') "a",ascii('0') zero,ascii(' ') space from dual;
A a ZERO SPACE
---------- ---------- ---------- ----------
65 97 48 32
2) 返回单引号的ASCII码
SQL> select ascii('''') from dual;
ASCII('''')
-----------
39
3) ASCII只针对第一个字母进行转换
SQL> select ascii('A'),ascii('AB'),ascii('ABC') from dual;
ASCII('A') ASCII('AB') ASCII('ABC')
---------- ----------- ------------
65 65 65
2、 CHR
语法:CHR(n [USING NCHAR_CS])
其中 “n” 为ASCII码数
SQL> select chr(39) from dual;
C
-
'
注:CHR(13) 为回车; CHR(10) 为换行。
3、 CONCAT
语法:CONCAT(char,dest_char_set[, source_char_set ])
作用:连接字符串,只能连接两个字符串
SQL> select concat('HELLO'||chr(32),'WORLD')||'!' as "HELLO WORLD" from dual;
HELLO WORLD
------------
HELLO WORLD!
4、 INITCAP
语法:INITCAP(char)
作用:返回字符串并将首字母大写
SQL> select initcap('hello') "Hello" from dual;
Hello
-----
Hello
5、 INSTR
语法:INSTR(string1,string2,start_position,nth_appearance)
string1:被检索的字符串
string2:希望搜索的字符串
start_position:搜索开始的位置,默认为1。如果为正,则为从左到右检索;如果为负,则为从右到左检索。
nth_appearance:代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1,如果为负数系统会报错。
作用:在一个字符串中搜索指定的字符,返回发现指定的字符位置
SQL> select instr('a2a4a6a8','a') "instr" from dual;
instr
----------
1
SQL> select instr('a2a4a6a8','a',-1,1) "instr" from dual;
instr
----------
7
SQL> select instr('a2a4a6a8','a',2,2) "instr" from dual;
instr
----------
5
6、 SUBSTR
语法:substr(string,start_position,[length])
作用:取子字符串,从start_position开始,取length长度个字符,如果length缺省,表示截取到字符串末尾。
1) 字符串‘a2a4a6a8’,从后面数第一个‘a’开始,截取之后的所有字符串
SQL> select substr('a2a4a6a8',7) from dual;
SU
--
a8
2) 字符串‘a2a4a6a8’,从第2个字符开始,截取3个字符
SQL> select substr('a2a4a6a8',2,3) from dual;
SUB
---
2a4
7、 VSIZE
语法:VSIZE(expr)
作用:返回expr的内部字节数,如果expr为空,返回null值
SQL> select vsize('hello') from dual;
VSIZE('HELLO')
--------------
5
8、 LENGTH
语法:LENGTH(expr)
作用:返回expr的字符长度
SQL> select length('hello') from dual;
LENGTH('HELLO')
---------------
5
9、 LOWER
语法:LOWER(char)
作用:返回字符串,并将所有的字母小写
SQL> select lower('HELLO') from dual;
LOWER
-----
hello
10、 UPPER
语法:UPPER(char)
作用:返回字符串,并将所有字母大写
SQL> select upper('hello') from dual;
UPPER
-----
HELLO
11、 LPAD&RPAD
语法:
LPAD(string,padded_length,[pad_string])
RPAD(string,padded_length,[pad_string])
1)用字符“0”使字符串在列的左侧补足5位
SQL> select lpad(rownum,5,'0') as left from dual connect by rownum<=5;
LEFT
--------------------
00001
00002
00003
00004
00005
2)用字符“0”使字符串在列的左侧补足6位,然后再在右侧用“0”补足到9位
SQL> select rpad(lpad(rownum,6,'0'),9,'0') as lr from dual connect by rownum <=5;
LR
------------------------------------
000001000
000002000
000003000
000004000
000005000
12、 LTRIM & RTRIM
语法:
LTRIM (string [, string_appearance])RTRIM (string [, string_appearance])
作用:删除string 左/右边出现的字符(string_appearence),当string_appearence缺省时删除左/右边出现的空格。
1) 删除字符串‘000100’左边的‘0’
SQL> select ltrim('000100','0') from dual;
LTR
---
100
2) 删除字符串‘000100’右边的‘0’
SQL> select rtrim('000100','0') from dual;
RTRI
----
0001
3) 删除字符串‘ 10’左边的空格
SQL> select ltrim(' 10') from dual;
LT
--
10
13、 REPLACE
语法:REPLACE(string,string1,string2)
string:希望被替换的字符或变量
string1:被替换的字符串
string2:要替换的字符串,缺省值为null
作用:用string2替换string中出现的string1
1)将字符串的‘0’替换为null
SQL> select replace('000100','0') from dual;
R
-
1
2)将字符串的‘0’替换为‘1’
SQL> select replace('000100','0','1') from dual;
REPLAC
------
111111
14、 TRANSLATE
语法:TRANSLATE(string,from_string,to_string)
作用:返回将出现在from_string中的每个字符替换为to_string中的相应字符以后的字符串。若from_string比to_string字符串长,那么在from_string中比to_string中多出来的字符将会被删除,三个参数中有一个是空,返回值也将是空值。
1)
SQL> select translate('abclloc','abc','he') from dual;
TRANS
-----
hello
2)返回‘,’的个数
SQL> select length(translate('a,b,c,d',',abcd',',')) from dual;
LENGTH(TRANSLATE('A,B,C,D',',ABCD',','))
----------------------------------------
3
3)将数字保留,将其他的大写字母移除
SQL>
SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','0123456789') "Translate example" FROM DUAL;
Tran
----
2229
15、
TRIM
语法:TRIM([{{LEADING
| TRAILNG | BOTH}
[trim_character]
| trim_character} FROM ] trim_source)
LEADING:剪掉前面的字符
TRAILING:剪掉后面的字符
BOTH:前后都减
1) 默认 (等同于BOTH)
SQL> with t as (select chr(32)||'OCP'||chr(32) as name from dual)
2 select '|'||name||'|','|'||trim(name)||'|' from t;
'|'||NA '|'||
------- -----
| OCP | |OCP|
2) 剪掉前面的空格
SQL> with t as (select chr(32)||'OCP'||chr(32) as name from dual)
2 select '|'||name||'|','|'||trim(leading from name)||'|' from t;
'|'||NA '|'||T
------- ------
| OCP | |OCP |
3) 剪掉后面的空格
SQL> with t as (select chr(32)||'OCP'||chr(32) as name from dual)
2 select '|'||name||'|','|'||trim(trailing from name)||'|' from t;
'|'||NA '|'||T
------- ------
| OCP | | OCP|
4) 剪掉指定字符“P”
SQL> with t as (select chr(32)||'OCP'||chr(32) as name from dual)
2 select trim(upper('p') from trim(name))||'M' from t;
TRI
---
OCM
5) 剪掉后面的字符“P”
SQL> with t as (select chr(32)||'OCP'||chr(32) as name from dual)
2 select trim(trailing upper('p') from trim(name))||'M' from t;
TRI
---
OCM
【SQL】字符型函数的更多相关文章
- SQL 练习一 字符型函数
处理字符串时,利用字符型函数的嵌套组合是非常有效的,试分析一道考题: create table customers(cust_name varchar2(20)); insert into custo ...
- 【PostgreSQL-9.6.3】函数(2)--字符型函数
在上一篇博文中我们交流了数值型函数,这篇我们将讨论PostgreSQL中的字符型函数. 1. reverse(string) reverse函数可以将string字符串的字母显示顺序颠倒. test= ...
- 动态SQL字符长度超过8000
动态SQL字符长度超过8000,我记得SQL SERVER 2008中用SP_EXECUTESQL打破了这个限制. 平常用动态SQL,可能都会用EXEC(),但是有限制,就是8000字符串长度.自从S ...
- Oracle 函数-字符型函数
1.字符型函数 函数 说明 案例 结果 ASCII(X) 求字符X的ASCII码 select ASCII('A') FROM DUAL; 65 CHR(X) 求ASCII码对应的字符 select ...
- sql字符转换函数大全
删除空格 有两个函数,TTRIM()和LTRIM(),可以用来从字符串中剪掉空格.函数LTRIM()去除应该字符串前面的所有空格:函数RTRIM()去除一个字符串尾部的所有空格.这些和vbscript ...
- oracle 常用sql字符函数介绍
常用字符函数介绍 1.ascii 返回与指定的字符对应的十进制数: SQL>select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') ...
- sql 字符带下划线匹配问题
SQL 中 _下划线 作用是 匹配一个任意字符. 如果我们要去掉下划线的作用 单纯只用作一个字符则需要转义成 like '%\_%' escape '\' 字段 1.order_qrsc 2.o ...
- oracle 10g函数大全--字符型函数
ASCII(x1) [功能]:返回字符表达式最左端字符的ASCII 码值. [参数]:x1,字符表达式 [返回]:数值型 [示例] SQL> select ascii('A') A,ascii( ...
- sql字符转义
/** * sql 内的like % 代表一个或多个字符, _代表一个字符,这都是需要转义的 * @param s * @return */ public static String escapeSp ...
随机推荐
- 30.IK中文分词器的安装和简单使用
在之前我们学的都是英文,用的也是英文的standard分词器.从这一节开始,学习中文分词器.中国人基本上都是中文应用,很少是英文的,而standard分词器是没有办法对中文进行合理分词的,只是将每个中 ...
- HDU 5442 Favorite Donut
Favorite Donut Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 洛谷 P1972 BZOJ 1878 [SDOI2009]HH的项链
题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...
- CODEVS3147 矩阵乘法2
...怎么优化都是90分,最后一个点一直T掉,有谁过了请告诉我. Program CODEVS3147; ; ..maxn,-..maxn] of longint; n,q,i,j,k,k1,k2,k ...
- js中call()和apply()的区别
· 它们的共同之处: 都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.” · 它们的不同之处: apply: 最多只能有两个参数—— ...
- F2BPM作流引擎系列索引
索引如下 F2工作流引擎遵循参考WFCM标准规范,符合中国国情特色,更轻量级的工作流引擎,支持多种数据库(mmsqlserver,mysql,oracle),有强大智能的组织模型接口可快速应用到任何基 ...
- F2BPM 开发Api与RESTfull应用服务Api 层次关系及示例
目前越来越多的企业架构解决方案更加趋向于基于http协议“微服务”访问跨系统调用,而不使用统传的WebService调用,即通过RESTfull方式进行交互,更加轻量整合调用更加方便.本文档中所有F2 ...
- 快速傅立叶变换&HDU 1402
参考http://www.cnblogs.com/v-July-v/archive/2011/08/13/2214132.html <算导> 那么,更快速的多项式乘法就依赖于能否把一个系数 ...
- 如何将hyper-v虚拟机转换成vmware的虚拟机- 转换SharePoint 2010 Information Worker Demonstration and Evaluation Virtual Machine (SP1)
官方有一个用于SharePoint的demo用的虚拟机: 2010 Information Worker Demonstration and Evaluation Virtual Machine (S ...
- leetcode第一刷_Convert Sorted Array to Binary Search Tree
晕.竟然另一样的一道题.换成sorted array的话.找到中间位置更加方便了. TreeNode *sortTree(vector<int> &num, int start, ...