DB2 For AS400 字符函数
工作闲暇之余,整理了AS400上的DB2内置函数,下面是字符函数。
CHAR(exp1 , exp2):将表达式转换为字符串。
返回值取决于第一个参数:①时间,日期,时间戳的字符串形式,exp1为时间,日期,时间戳。
②字符串,exp1为任何形式的字符串。
③整数的字符串形式,exp1为SMALLINT,INTEGER,BIGINT。
④十进制数的字符串形式,exp1为PACKED or ZONED十进制数。
⑤双精度浮点数,exp1为DOUBLE or REAL。
对于TIME和DATE类型有下面的格式:
Date Type |
Format |
ISO |
yyyy-mm-dd |
USA |
mm/dd/yyyy |
EUR |
dd.mm.yyyy |
JIS |
yyyy-mm-dd |
LOCAL |
时间戳的格式为:yyyy-mm-dd-hh:mm:ss.milsec
截取字符串:CHAR(‘ABCDEFGHIJK’,6)=’ABCDEF’
替代字符:CHAR(123.45,‘,’)=123,45
--替换字符串,截取字符串
SELECT CHAR(123.456,'m') ,CHAR('ABCDEFGHIJK',6)FROM SYSIBM.SYSDUMMY1
1 2
123m456 ABCDEF
--日期格式
SELECT char(date('10/25/2011'),iso) COL1, char(current date,usa) COL2, char(date('10/25/2011'),eur) COL3, char(date('10/25/2011'),jis) COL4, char(date('10/25/2011'),local) COL5
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+....5....+.
COL1 COL2 COL3 COL4 COL5
2011-10-25 08/25/2012 25.10.2011 2011-10-25 10/25/11
VARCHAR(exp1,exp2,exp3):返回值
1. 字符串:第一个参数为任意类型的字符串。
2. Graphic String:第一个参数为UCS-2 graphic 字符串。
3. 整数:第一个参数是smallint,integer,bigint。
4. 十进制数:第一个参数为packed或者zoned十进制数。
5. 双精度浮点数:第一个参数为double或者real类型的数。
--character to varchar
VARCHAR(exp1,length[DEFAULT],integer):
Exp1:定长字符串,变长字符串,CLOB类型。
Length:返回字符串的长度。
如果length大于字符串长度,则返回值为原字符串。
如果length小雨字符串长度,则从字符串首部开始截取长度为length的字符串。
DEFAULT:如果exp1为null,返回值为1,否则返回整个字符串。
Integer:指定结果的CCSID值,必须为一个有效的单字节字符SBCS CCSID[返回值为单字节字符],mixed data CCSID[返回值为mixed数据],或者65535[位数据]。如果此参数为SBCS CCSID,那么exp1不能为DBCS-either或者DBCS-only字符串。
SELECT LENGTH(VARCHAR('ABC',5))
FROM QSYS2/QSQPTABL
....+....1....LENGTH 3
--截取字符串
SELECT VARCHAR('ABCDEFGH',5) FROM QSYS2/QSQPTABL
....+..
VARCHAR ABCDE
--
SELECT LENGTH(VARCHAR('ABCD ')) FROM QSYS2/QSQPTABL
....+....1....LENGTH 7
--DEFAULT关键字
SELECT VARCHAR('ABCDEFGH',DEFAULT)FROM QSYS2/QSQPTABL
....+....1....+.
VARCHAR function
ABCDEFGH
--
SELECT VARCHAR('ABCDEFG',2,1)
FROM QSYS2/QSQPTABL
Character conversion between CCSID 836 and CCSID 1 not valid.
--整型数据转换为变长字符串--十进制数据转换为变长字符串--浮点数转换为变长字符串
CCSID信息:CCSID
CHAR,VARCHAR函数都是功能很强大的函数,具体参考:DB2内置函数
CONCAT(parm1,parm2):字符串连接,||功能相同。
--DB2里面连接字符串只能用CONCAT函数,或者“||”,不能使用“+”。
SELECT CONCAT(CAST(CURDATE() AS CHAR(12)),CAST(CURTIME() AS CHAR(12)))
FROM QSYS2/QSQPTABL
....+....1....+....2....
CONCAT
2012-08-26 18:12:46
---
SELECT CONCAT(CHAR(CURDATE()),CHAR(CURTIME())) COL1,'aa'||23 COL2
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3...
COL1 COL2
2012-08-2618:15:45 aa23
CHAR_LENGTH(string),CHARACTER_LENGTH(string),LENGTH(string):获取字符串长度,包括空格。
SELECT CHARACTER_LENGTH('ABCDEFG'),CHAR_LENGTH(' 123456 '), LENGTH(' 0123 ')
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+...
CHARACTER_LENGTH CHAR_LENGTH LENGTH 7 8 7Current connection is to relational database I5DEV.
SELECT CURRENT DATE,CURRENT TIME,CURRENT TIMESTAMP
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+....5....
CURRENT DATE CURRENT TIME CURRENT TIMESTAMP 2012-08-24 08:50:51 2012-08-24-08.50.51.461345
--测试
SELECT char_length('123654 '),character_length('abcde'), length('123456789 ')
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+...CHAR_LENGTH CHARACTER_LENGTH LENGTH 9 5 10
DIFFERENCE(parm1,parm2):返回2个字符串的类似度,4(最相似),3,2,1(相似度最低)。
SELECT DIFFERENCE('TREES','TRACE') COL1,DIFFERENCE('TREE','TRACE') COL2
,DIFFERENCE('TRES','TRACE') COL3
,DIFFERENCE('APPLE','TRACE') COL4FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+....5....+....6..COL1 COL2 COL3 COL4 4 3 4 1
SOUNDEX(parm):返回4个用来分析单词的发音字符值;参数是除了BLOB类型之外的任意长度字符串。
SELECT DIFFERENCE('CONSTRAINT','CONTRITE'),SOUNDEX('CONSTRAINT'), SOUNDEX('CONTRITE') FROM QSYS2/QSQPTABL
....+....1....+....2....+....3..DIFFERENCE SOUNDEX SOUNDEX2 C523 C536
DIGITS(parm):类似CHAR函数,将数字转换为数字。数字(or 字符数字) —>数值。
SELECT DIGITS(-10.12)+10 FROM QSYS2/QSQPTABL
....+....1....+...
Numeric Expression1,022
----
SELECT DIGITS('123.10'),LENGTH(DIGITS('123.10')) FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....DIGITS ( '123.10' ) LENGTH 000000000000000000000000000001231000000000000000000000000000000 63
SUBSTR(string , from , to):截取字符串。从string的from位置开始截取字符串,截取长度为to,包括from位置的字符,结果为字符串。
SELECT SUBSTR('DB2-For-System-i',4,3)
FROM QSYS2/QSQPTABL
....+.
SUBSTR-Fo
--
SELECT SUBSTR('DB2-For-System-i',LENGTH('DB2-For-System-i'),3)
FROM QSYS2/QSQPTABL
....+.
SUBSTRi
--
SELECT COALESCE(SUBSTR('DB2',0,1),'EE') COL1,LENGTH(SUBSTR('DB2',-1,2)) COL2,
SUBSTR('DB2',-1,3) COL3,
LENGTH(SUBSTR('DB2',-3,4)) COL4,
SUBSTR('DB2',-1,5) COL5
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+....
COL1 COL2 COL3 COL4 COL5 2 D 4 DB2
--
SELECT LENGTH(SUBSTR('ABCDEF',-1,0))
FROMQSYS2/QSQPTABL
....+....1....LENGTH 0
INSERT(parm1,parm2,parm3,parm4):在源字符串里面添加字符串。
注意:第一个参数的起始位置为1。
INSERT(‘ABCDEF’,3,4,’OUT’)= ‘ABOUT’
第一个参数:源字符串
第二个参数:添加字符串的起始位置
第三个参数:从源字符串中删除的字符串
第四个参数:添加到源字符串里面的字符串;若为 null,则从源字符串中从起始位置截去长度为参数三的串。
SELECT INSERT('ABCDEFGH',1,0,'XXX') COL1, --直接字符串首添加INSERT('ABCDEFGH',1,2,'XXXXX') COL2,--删除前2个字符,在添加字符串INSERT('ABCDEFGH',8,0,'ZZ') COL3 --在第8个字符后面添加字符串
FROM SYS2/QSQPTABL
....+....1....+....2....+....3....+.
COL1 COL2 COL3
XXXABCDEFGH XXXXXCDEFGH ABCDEFGZZH
-----
SELECT INSERT('ABCD',4,2,'....'), --删除第4个字符后面的2个字符(包括末尾),再添加字符串INSERT('ABCD',5,1,'999999') --在字符串末尾(length + 1)添加
FROM QSYS2/QSQPTABL
....+....1....+....
INSERT INSERT
ABC.... ABCD999999
GRAPHIC,VARGRAPHIC(parm):将字符或者数字转换为与双字节字符数据相容的值,如中文和日文。即,将单字节字符转换为双字节字符:
SELECT GRAPHIC('ABC'),VARGRAPHIC('WWW') FROM QSYS2/QSQPTABL
....+....1....+....2....+....GRAPHIC ( 'ABC' ) VARGRAPHIC
ABC WWW
LCASE,LOWER(parm):将字符转换为小写;
UCASE,UPPER(parm):将字符转换为大写;
LEFT(srcStr,len):从字符串的左面开始,截取字符串。
LEFT(‘ABC123’,3)= ‘ABC’
RIGHT(srcStr,len):从字符串的右面开始,截取字符串。
RIGHT(‘ABC123’,3)= ‘123’
SELECT LEFT('_yeeXun',3),RIGHT('_yeeXun',4)FROM QSYS2/QSQPTABL
....+....1....+.LEFT RIGHT _ye eXun
SUBSTR( or SUBSTRING)(srcStr,Strart,len):截取字符串。
SUBSTR(‘ABC123’,3,2)= ‘C1’
LOCATE(str,srcStr,start_position):在源字符串中从指定位置开始查找子字符串首次出现的实际位置。
LOCATE(‘AB’,’ABCABCABE’)= 1
LOCATE(‘AB’,’ABCABDABE’,3)= 2
SELECT LOCATE('AB','ABCABEABD'),--默认从字符串头位置1开始LOCATE('AB','ABCABEABD',2), -- 返回字符串首次出现的实际位置LOCATE('AB','ABCABEABD',LENGTH('ABCABEABD')) --没找到则返回0
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+. LOCATE LOCATE LOCATE 1 4 0
POSSTR,POSITION(subStr,srcStr):获取子字符串在源字符串中 首次出现的 实际位置。
SELECT POSSTR('ABCABEABD','E'),
POSITION('12' IN 'ABCD12EF12JK')
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3...POSSTR POSITION function6 5
LTRIM(parm):去掉字符串前面的空格
RTRIM(parm):去掉字符串后面的空格
TRIM:从字符串中删除指定的字符串,功能更加强大
SELECT LTRIM(' 000'), RTRIM('111 '), TRIM(' ABC '), TRIM('1' FROM 'ASD1345D1111111'), TRIM('10' FROM '10.203410101010.'), --不可以截取多个字符串TRIM(LEADING '0' FROM '000123000'), TRIM(TRAILING '0' FROM '000123000'),TRIM(BOTH '0' FROM '000123000'), TRIM('0' FROM '000123000')
FROM QSYS2/QSQPTABL
--
SELECT LTRIM(' 000'), RTRIM('111 '), TRIM(' ABC '), TRIM('1' FROM 'ASD1345D1111111')
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+..LTRIM ( ' 000' ) RTRIM ( '111 ' ) TRIM ( ' ABC ' ) TRIM function 000 111 ABC ASD1345D
--
SELECT TRIM(LEADING '0' FROM '000123000'), TRIM(TRAILING '0' FROM '000123000'),TRIM(BOTH '0' FROM '000123000'), TRIM('0' FROM '000123000')
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+....5....+...
TRIM function TRIM function TRIM function TRIM function123000 000123 123 123
REPEAT(srcStr , parm2):重复字符串。
SPACE(parm):返回参数个空格。
SELECT REPEAT('123.',2) FROM QSYS2/QSQPTABL
....+... REPEAT 123.123.
----
SELECT LENGTH(SPACE(10)) FROM QSYS2/QSQPTABL
....+....1....LENGTH 10
-----
SELECT'AAA'||SPACE(10)||'BB',LENGTH(CONCAT('CC ',SPACE(10))),
LENGTH('AAA'||SPACE(10)||'BB')
FROM QSYS2/QSQPTABL
....+....1....+....2....+....3....+....4....+....
String Expression LENGTH LENGTH AAA BB 13 15
REPLACE(subStr , srcStr , reStr):将第二个参数中的第一个参数出现的位置替换为第三个参数。
REPLACE(‘XY’ , ‘XYZ’, ‘BI’) = ‘BIZ’
REPLACE(‘XY’ , ‘XYZ’, ‘’) = ‘Z’
REPLACE(‘XY’ , ‘XYZ’ , ‘JAZ’) = ‘JAZZ’
REPLACE(‘XY’ , ‘ABC’ , ‘DE’) = ‘ABC’
COALESCE(exp1, exp2,exp3):返回同类型的参数中,第一个不为空(NULL)的参数,常用与字符串的比较。
SELECT COALESCE(STRCOL,'CSDN','BLOG'),NUMCOL,DTECOL
FROM YTCCLB/TSTTB
....+....1....+....2....+....3....+....4COALESCE NUMCOL DTECOL CSDN 10 - _yeeXun - 2012-08-28
NULLIF(exp1,exp2):若exp1=exp2则返回NULL,否则返回exp1;参数exp1,exp2必须为相同类型或者兼容,比如字符串和时间类型可兼容。
其作用等同于CASEexp1=exp2 THEN NULL ELSE exp1 END。
IFNULL(exp1,exp2):如果exp1为NULL,返回exp2,否则返回exp1。
--创建表
CREATE TABLE YTCCLB/TSTTB (
STRCOL VARCHAR ( 12) NOT NULL WITH DEFAULT,
NUMCOL INT NOT NULL WITH DEFAULT,
DTECOL DATE NOT NULLWITH DEFAULT)
Table TSTTB in YTCCLB created but was not journaled.
--添加数据失败
INSERT INTO YTCCLB/TSTTB VALUES(NULL, 10, NULL)
Null values not allowed in column or variable STRCOL.
--修改表
ALTER TABLE YTCCLB/TSTTB ALTER COLUMN STRCOL DROP NOT NULL
ALTER completed for table TSTTB in YTCCLB.
ALTER TABLE YTCCLB/TSTTB ALTER COLUMN NUMCOL DROP NOT NULL
ALTER completed for table TSTTB in YTCCLB.
ALTER TABLE YTCCLB/TSTTB ALTER COLUMN DTECOL DROP NOT NULL
ALTER completed for table TSTTB in YTCCLB.
--添加数据成功
INSERT INTO YTCCLB/TSTTB VALUES(NULL, 10, NULL)
1 rows inserted in TSTTB in YTCCLB.
--测试NULLIF,IFNULL函数:
SELECT IFNULL(NULLIF(STRCOL,'_yeeXun'),'DB2'),NUMCOL,IFNULL(DTECOL,'2012-01-01')
FROM YTCCLB/TSTTB
SELECT statement run complete.
....+....1....+....2....+....3....+....4
IFNULL NUMCOL IFNULL
DB2 10 2012-01-01
--查看YTCCLB/TSTTB表中的数据,空值以“-”表示:
SELECT * FROM YTCCLB/TSTTB
....+....1....+....2....+....3....+....4
STRCOL NUMCOL DTECOL
- 10 -
_yeeXun - 2012-08-28
更多DB2 400内置函数简介,参考: http://publib.boulder.ibm.com/iseries/v5r1/ic2924/index.htm?info/db2/rbafzmstscale.htm
DB2 For AS400 字符函数相关推荐
- c语言计算字符串的函数是什么,字符函数
字符函数(character function)是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据. 中文名 字符函数 外文名 character function 应用领域 计算机等涉 ...
- 数据库字符mysql_MySQL数据库之字符函数详解
MySQL数据库中的函数根据功能可以划分为字符函数.数值运算符与函数.比较运算符与函数.日期时间函数.信息函数.聚合函数.加密函数以及自定义函数等. 1.CONCAT() CONCAT()函数用于字符 ...
- Oracle可以处理LOB字段的常用字符函数
以前处理LOB字段都是使用DBMS_LOB包,最近看了文档才发现,原来很多常用的字符函数都是支持LOB字段的. 建立一个测试表: SQL> CREATE TABLE T_LOB (ID NUMB ...
- 5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)
1 多行函数(理解:有多个输入,但只输出1个结果) SQL>select count(*) from emp; COUNT(*) ------------- 14 B 字符函数Lower ...
- 字符函数和内存函数模拟实现
字符函数和内存函数模拟实现 字符函数和内存函数模拟实现 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<str ...
- 树莓派i2c python_树莓派2 python i2cPython中chr、unichr、ord字符函数之间的对比
chr.unichr.ord在Python中都可以被用作字符类型转换,这里我们就来浅谈Python中chr.unichr.ord字符函数之间的对比,需要的朋友可以参考下ord是unicode ordi ...
- 摘:常用函数(包括:宽字符函数、普通C函数 )
只要看见"W"就是宽的意思,左边wchar_t,右边char 字符分类: 宽字符函数 普通C函数 描述 iswalnum() ...
- Oracle filter 函数,Oracle数据库之SQL单行函数---字符函数续
前一篇博客练习了一些字符函数,之后自己又去下查阅了相关的资料,上一篇博客中还有很多的 字符函数没有练习到,这次主要是对上次的一些未用到的字符函数进行一些补充练习. ascii() 返回与指定的字符对应 ...
- 常见的字符函数与字符串函数介绍(1)
常见的字符函数与字符串函数介绍 前言 C语言中对字符与字符串的处理很是频繁,但是C语言中并没有字符串类型的变量,字符串通常存放在常量字符串或者字符数组中.字符串常量适用于那些对它不做任何修改的字符串函 ...
最新文章
- Linux|UNIX下LAMP环境的搭建及常见问题[连载4]
- 谈谈网站设计时图片的使用
- [Termux]给Termux安装一个发行版Linux
- 百度地图API : 自定义标注图标
- [ci]jenkins server启动,通过jnlp的方式启动slave(容器模式)
- mysql grant usage on_grant 权限 on 数据库对象 to 用户
- 查看目录是否为内存盘_Linux buff/cache内存释放
- L2-024. 部落-PAT团体程序设计天梯赛GPLT
- 计算机网络网络层之IP协议(1)——IP数据报
- CentOS 5.5编译安装lnmp
- QImage图片裁剪
- 安卓手机利用DroidCam当电脑摄像头使用方法
- c语言删除字符串中特定字符串,C语言删除字符串中指定字符的例子
- python def函数参数_Python def函数的定义、使用及参数传递方法
- UVA815 洪水Flooded
- 第4章 关系数据理论
- 205.自定义菜单[个人公众号未认证无法使用]
- sql注入中的联合注入
- Ubuntu16.04的图形化界面系统安装+NIVIDIA驱动安装-Cuda-Cudnn+教程全(后面安装系统通用)
- 第三次作业--原型设计
热门文章
- 代编股票选股公式、代编公式选股、代编期货量化交易公式、代编公式选股
- 智慧物流:RFID智能仓储管理解决方案-新导智能
- 计算机无法打开用友通,用友T3无法打开一打开就弹出这个
- ISO 3166-1
- 支付产品理解第二篇——闪付与手机支付
- Excel VBA实现从多篇Word文档内抓取文本框内内容(书接上一篇博客)
- linux下使用ffmpeg将flv、mp4、rmvb转换为libx264的mp4
- (9.26更新 老机福音,再创经典)Ghost_XP_战神 V9.5 老机优化版
- 电脑为什么会自动关机
- 论坛灌水机与注册机问题