SQL语句——02、字符类型函数

介绍字符型如下函数

ASCII(‘字符‘)

返回字符的ASCII码值

idle> select ASCII(‘a‘) from dual;
ASCII(‘A‘)
----------
 97
idle> select ASCII(‘A‘) from dual;
ASCII(‘A‘)
----------
 65
idle>

CHR(‘n‘)

返回n的字符值 n是ASCII码数

idle> select chr(65) from dual;
C
-
A
idle> select chr(39) from dual;
C
-
‘
idle>
但是求单引号的ASCII码写法很特殊 两个单引带表一个单引
idle> select ASCII(‘‘‘) from dual;
ERROR:
ORA-01756: quoted string not properly terminated
idle> select ASCII(‘‘‘‘) from dual;
ASCII(‘‘‘‘)
-----------
  39
idle>

LOWER(列名|表达式)

小写转换

idle> select lower(‘ABC‘) from dual;
LOW
---
abc
idle>

UPPER(列名|表达式)

大写转换

idle> select upper(‘abc‘) from dual;
UPP
---
ABC
idle>

INITCAP(列名|表达式)

每个词的词头大写 其他小写

idle> select initcap(‘abC dEf XYZ‘) from dual;
INITCAP(‘AB
-----------
Abc Def Xyz
idle>

CONCAT(列名|表达式,列名|表达式)

将第一个字符串和第二个字符串连接

idle> select concat(‘abc‘,‘xyz‘) from dual;
CONCAT
------
abcxyz
不太常用,因为我们可以用 || 连接

idle> select ‘abc‘||‘xyz‘ from dual;
‘ABC‘|
------
abcxyz

SUBSTR(列名|表达式,m,[n])

返回指定子串,该子串是从第m个字符开始,其长度为n,不指定n值则从m到最后

idle> select substr(‘abcdefxyz‘,4,3) from dual;
SUB
---
def
idle> select substr(‘abcdefxyz‘,4) from dual;
SUBSTR
------
defxyz
idle>SELECT substr(‘12345678‘, -4) FROM dual;
SUBSTR
------
5678

LENGTH(列名|表达式)

返回字符串的长度

idle> select length(‘abcdefxyz‘) from dual;
LENGTH(‘ABCDEFXYZ‘)
-------------------
    9
idle>

INSTR (列名|表达式,‘字符串‘,[m],[n])

从表达式或列中搜索给定的字符串的所处位置,m代表从第几个开始搜,n代表第几次出现. m和n默认都是1,m=-1是从字符串后往前开始搜

idle> select INSTR(‘abcdddxyz‘,‘d‘) from dual;
INSTR(‘ABCDDDXYZ‘,‘D‘)
----------------------
       4
idle>
idle> select INSTR(‘abcdddxyz‘,‘d‘,5) from dual;
INSTR(‘ABCDDDXYZ‘,‘D‘,5)
------------------------
         5
idle> select INSTR(‘abcdddxyz‘,‘d‘,5,2) from dual;
INSTR(‘ABCDDDXYZ‘,‘D‘,5,2)
--------------------------
    6
idle>

TRIM([leading|]trailing|both 要去掉的字符 FROM 源字符串)

从源字符串中去掉指定的字符 可以用leading tailing来修饰去掉的字符串是在开头或结尾,默认是两者都  默认截取的是空格

idle> select trim(‘a‘ from ‘aaabcdeaaafxyzaaa‘) from dual;
TRIM(‘A‘FRO
-----------
bcdeaaafxyz
idle> select trim(leading ‘a‘ from ‘aaabcdeaaafxyzaaa‘) from dual;
TRIM(LEADING‘A
--------------
bcdeaaafxyzaaa
idle> select trim(trailing ‘a‘ from ‘aaabcdeaaafxyzaaa‘) from dual;
TRIM(TRAILING‘
--------------
aaabcdeaaafxyz
idle>

左补齐lpad 右补齐rpad

将不足20个字符的位置用指定符号填充.

idle> select lpad(ename,20,‘-‘) ,rpad(ename,20,‘-‘) from emp where ename like ‘S%‘;
LPAD(ENAME,20,‘-‘)   RPAD(ENAME,20,‘-‘)
-------------------- --------------------
---------------SMITH SMITH---------------
---------------SCOTT SCOTT---------------
idle>

REPLACE(源字符串,OLD字符串,NEW字符串)

从源字符串中找到搜索的old字符串,替换成new字符串

idle> select replace(‘abcdefxyz‘,‘def‘,‘DEF‘) from dual;
REPLACE(‘
---------
abcDEFxyz
idle>

dump(‘str‘[,FMT[,S,E]])

用于转换进制格式

str 被转换的字符串

FMT 格式

S   str的开始字符位置

E   S开始的后续结束字符位置

SQL> select dump(‘abcd‘) from dual;
DUMP(‘ABCD‘)
--------------------------
Typ=96 Len=4: 97,98,99,100
SQL>
SQL> select dump(‘abcd‘,1002) from dual;
DUMP(‘ABCD‘,1002)
------------------------------------------------
Typ=96 Len=4 CharacterSet=AL32UTF8: 97,98,99,100
SQL>
SQL> select dump(‘abcd‘,1008) from dual;
DUMP(‘ABCD‘,1008)
---------------------------------------------------
Typ=96 Len=4 CharacterSet=AL32UTF8: 141,142,143,144
SQL>
DUMP(‘ABCD‘,1016)
-----------------------------------------------
Typ=96 Len=4 CharacterSet=AL32UTF8: 61,62,63,64
SQL> select dump(‘abcd‘,1017) from dual;
DUMP(‘ABCD‘,1017)
-------------------------------------------
Typ=96 Len=4 CharacterSet=AL32UTF8: a,b,c,d
SQL>
SQL> select dump(‘abcd‘,1017,2,2) from dual;
DUMP(‘ABCD‘,1017,2,2)
---------------------------------------
Typ=96 Len=4 CharacterSet=AL32UTF8: b,c
SQL>
SQL> select dump(‘飞‘) from dual;
DUMP(‘飞‘)
-------------------------
Typ=96 Len=3: 233,163,158
SQL> select 233*power(256,2)+163*256+158 from dual;
233*POWER(256,2)+163*256+158
----------------------------
      15311774
SQL> select chr(15311774) from dual;
CHR
---
飞
SQL>

对比函数

  • COALESCE 返回该表达式列表的第一个非空value。

格式: COALESCE(value1, value2, value3, ...)

含义: 返回value列表第一个非空的值。value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

EXAMPLE:

select coalesce (1, null, 2 ) from dual ; -- 返回1
select coalesce ( null, 2, 1 ) from dual ; -- 返回2
select coalesce (t.empno, t.mgr ) from  scott.emp t ; -- 效果类似 NVL( t.empno, t.mgr )
  • GREATEST 返回值列表中最大值

格式: GREATEST(value1, value2, value3, ...)

含义: 返回value列表最大的值。

value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

当value值列表中有一个为NULL,则返回NULL值。

EXAMPLE:

select greatest (1, 3, 2 ) from dual ; -- 返回3
select greatest ( ‘A‘, ‘B‘, ‘C‘ ) from dual ; -- 返回C
select greatest (null, ‘B‘, ‘C‘ ) from dual ; -- 返回null
select greatest (t.empno, t.mgr ) from  scott.emp t ; -- 返回empno和mgr 较大值
  • LEAST 返回值列表中最小值

格式: LEAST(value1, value2, value3, ...)

含义: 返回value列表最小的值。

value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。

当value值列表中有一个为NULL,则返回NULL值。

EXAMPLE:

select least (1, 3, 2 ) from dual ; -- 返回1
select least ( ‘A‘, ‘B‘, ‘C‘ ) from dual ; -- 返回A
select least (null, ‘B‘, ‘C‘ ) from dual ; -- 返回null
select least (t.empno, t.mgr ) from  scott.emp t ; -- 返回empno和mgr 较小值

原文地址:https://www.cnblogs.com/marxist/p/11708094.html

时间: 2024-10-12 04:51:33

SQL语句——02、字符类型函数的相关文章

SQL 语句日期用法及函数

SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天select '月'=month(cl_s_time) from class  --返回月select '年'=year(cl_s_time) from class  --返回年 --DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量:select date

对SQL语句进行过滤的函数

/// <summary> /// 过滤SQL非法字符串 /// </summary> /// <param name="value"></param> /// <returns></returns> public static string Filter(string value) { if (string.IsNullOrEmpty(value)) return string.Empty; value = Re

ORACLE基本SQL语句-添加更新数据函数篇

一.添加数据 /*添加数据*/insert into STU values('stu0004','赵一',18,1,"kc0004");insert into STU(STU_ID,STU_NAME,STU_AGE,STU_SET ) values('stu0013','储十一',19,1); 说明:如果不指定将数据添加到那个字段,那么此时必须列出全部数据,如果列出字段,则一一对应,必须列出约束不为空的所有字段,否则报错. 二.更新数据 /*更新数据*/update STU SET S

SQL语句——18、正则表达式函数

Oracle正则表达式(regularexpression) 元字符 字符含义 举例说明 ^ 匹配字符串的开始位置(在[]中使用,此时它表示不接受该字符集合. ^a:匹配以a开始的字符串 [^a]:匹配不含a的字符串 - 当使用在a-m表示范围: 当使用在第一个字符时表示 连字符串,如[-abc]   $ 匹配字符结束位置 ‘a$':匹配以a结束的字符串 . 匹配除换行符 n之外的任何单字符.   ? 匹配前面的子表达式零次或一次 tr(y(ing)?):可以表示try或者trying * 匹配

sql:将字符类型字段转换成数字并排序

使用cast 函数可以把字符类型字段(数学形式)转换为数字 比如 1 SELECT c.unit_no, c.name,m.apply_no,m.MEETING_TYPE,m.meeting_no,m.BOOTH FROM nfrc.meeting_apply m,company c WHERE c.unit_no(+) = m.unit_no AND m.auth = 1 AND m.nfrc_meeting_no=? ORDER BY cast(m.BOOTH AS INT) ASC ";

sql语句对int类型进行模糊查询

重点:select * from course where cast(courseId as char) like '%118%'; 首先可以将int类型转换为string类型的值再进行模糊查询,用方法cast(num as char):这个可以将num(int类型)转化为char类型.完整的语句:假如我现在要在课程表(course)里面根据课程id(courseId)进行模糊查询:select * from course where cast(courseId as char) like '%

oracle数据库 SQL语句、内置函数大全

1.数值函数 函数 返回值 样例 显示 CEIL(n)      大于或等于数值n的最小整数 SELECT CEIL(10.6) FROM TABLE_NAME; 11 FLOOR(n)  小于等于数值n的最大整数  SELECT FLOOR (10.6) FROM TABLE_NAME; 10 MOD(m,n)  m除以n的余数,若n=0,则返回m SELECT MOD (7,5) FROM TABLE_NAME l; 2 POWER(m,n) m的n次方 SELECT POWER (3,2)

SQL语句——16、排序函数

row_number 和伪列rownum类似,都是产生顺序的序列号的,但这个分析函数row_number并不是为整个select数据产生序列,而是为分组后的每个组内产生序列. 比如,要取出每个部分的前两个最高工资的员工 SQL> select deptno,ename,sal from (select deptno,ename,sal, row_number() over(partition by deptno order by sal desc) drn from emp) where drn

SQL常用的字符处理函数

ASCII(字符串) 返回字符串表达式中最左侧的ASCII代码值,eg :SELECT ASCII('S') 得到结果83 CHAR(字符) 将整数类型的ASCII值转换为对应的字符,eg:SELECT CHAR(83) 得到结果S LEN(需要获取长度的字符串) 返回字符串的长度,eg:SELECT LEN('ooooo') 得到结果5 LEFT(需要被从左边截取的字符串,截取的长度) 返回左边的字符串,eg:SELECT LEFT('abcdefg',3) 得到结果 abc RIGHT(需要