工作闲暇之余,整理了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 字符函数相关推荐

  1. c语言计算字符串的函数是什么,字符函数

    字符函数(character function)是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据. 中文名 字符函数 外文名 character function 应用领域 计算机等涉 ...

  2. 数据库字符mysql_MySQL数据库之字符函数详解

    MySQL数据库中的函数根据功能可以划分为字符函数.数值运算符与函数.比较运算符与函数.日期时间函数.信息函数.聚合函数.加密函数以及自定义函数等. 1.CONCAT() CONCAT()函数用于字符 ...

  3. Oracle可以处理LOB字段的常用字符函数

    以前处理LOB字段都是使用DBMS_LOB包,最近看了文档才发现,原来很多常用的字符函数都是支持LOB字段的. 建立一个测试表: SQL> CREATE TABLE T_LOB (ID NUMB ...

  4. 5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)

     1  多行函数(理解:有多个输入,但只输出1个结果) SQL>select count(*) from emp; COUNT(*) ------------- 14 B 字符函数Lower ...

  5. 字符函数和内存函数模拟实现

    字符函数和内存函数模拟实现 字符函数和内存函数模拟实现 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<str ...

  6. 树莓派i2c python_树莓派2 python i2cPython中chr、unichr、ord字符函数之间的对比

    chr.unichr.ord在Python中都可以被用作字符类型转换,这里我们就来浅谈Python中chr.unichr.ord字符函数之间的对比,需要的朋友可以参考下ord是unicode ordi ...

  7. 摘:常用函数(包括:宽字符函数、普通C函数 )

    只要看见"W"就是宽的意思,左边wchar_t,右边char 字符分类: 宽字符函数            普通C函数            描述 iswalnum()       ...

  8. Oracle filter 函数,Oracle数据库之SQL单行函数---字符函数续

    前一篇博客练习了一些字符函数,之后自己又去下查阅了相关的资料,上一篇博客中还有很多的 字符函数没有练习到,这次主要是对上次的一些未用到的字符函数进行一些补充练习. ascii() 返回与指定的字符对应 ...

  9. 常见的字符函数与字符串函数介绍(1)

    常见的字符函数与字符串函数介绍 前言 C语言中对字符与字符串的处理很是频繁,但是C语言中并没有字符串类型的变量,字符串通常存放在常量字符串或者字符数组中.字符串常量适用于那些对它不做任何修改的字符串函 ...

最新文章

  1. Linux|UNIX下LAMP环境的搭建及常见问题[连载4]
  2. 谈谈网站设计时图片的使用
  3. [Termux]给Termux安装一个发行版Linux
  4. 百度地图API : 自定义标注图标
  5. [ci]jenkins server启动,通过jnlp的方式启动slave(容器模式)
  6. mysql grant usage on_grant 权限 on 数据库对象 to 用户
  7. 查看目录是否为内存盘_Linux buff/cache内存释放
  8. L2-024. 部落-PAT团体程序设计天梯赛GPLT
  9. 计算机网络网络层之IP协议(1)——IP数据报
  10. CentOS 5.5编译安装lnmp
  11. QImage图片裁剪
  12. 安卓手机利用DroidCam当电脑摄像头使用方法
  13. c语言删除字符串中特定字符串,C语言删除字符串中指定字符的例子
  14. python def函数参数_Python def函数的定义、使用及参数传递方法
  15. UVA815 洪水Flooded
  16. 第4章 关系数据理论
  17. 205.自定义菜单[个人公众号未认证无法使用]
  18. sql注入中的联合注入
  19. Ubuntu16.04的图形化界面系统安装+NIVIDIA驱动安装-Cuda-Cudnn+教程全(后面安装系统通用)
  20. 第三次作业--原型设计

热门文章

  1. 代编股票选股公式、代编公式选股、代编期货量化交易公式、代编公式选股
  2. 智慧物流:RFID智能仓储管理解决方案-新导智能
  3. 计算机无法打开用友通,用友T3无法打开一打开就弹出这个
  4. ISO 3166-1
  5. 支付产品理解第二篇——闪付与手机支付
  6. Excel VBA实现从多篇Word文档内抓取文本框内内容(书接上一篇博客)
  7. linux下使用ffmpeg将flv、mp4、rmvb转换为libx264的mp4
  8. (9.26更新 老机福音,再创经典)Ghost_XP_战神 V9.5 老机优化版
  9. 电脑为什么会自动关机
  10. 论坛灌水机与注册机问题