db2字符串函数

db2字符串函数

DB2⼀个汉字占3个字节,Oracle占两个字节。

Oracle:

SQL> select lengthb('中') from dual;

LENGTHB('中')

-------------

2

DB2:

db2 => values length('中')

1

-----------

3

1、Locate函数

语法:LOCATE(ARG1,ARG2,) LOCATE函数在ARG2中查找ARG1第⼀次出现的位置,如果指定POS,则从ARG2的POS处开始查找ARG1第⼀次出现的位置。

db2:

LOCATE 函数返回⼀个字符串在另⼀个字符串中第⼀次出现的起始位置。如果指定了可选的起始位置,则表明它是源字符串中开始进⾏搜索的字符位置。可以指定⼀个可选的字符串长度

单元来指明在哪些单元中表⽰函数的起始位置

和结果。可以使⽤基于字符的函数来解决在 LOCATE 函数中指定起始位置的问题。locate(String param1,String param2,int param3) 从param2的第param3位置开始,返回param1第⼀次出现的位置,默认param2为1。

db2 => values locate('a','abca',3,codeunits16)

1

-----------

4

1 条记录已选择。

POSITION 函数返回⼀个字符串在另⼀个字符串中第⼀次出现的起始位置。使⽤基于字符的函数可以解决将字节位置返回为字符位置的问题。

经测试,代码单元⽤octets也可以得到正确结果。db2 => values position('中','abc1中',codeunits16)

1

-----------

5

1 条记录已选择。

Oracle:

INSTR(源字符串, ⽬标字符串, 起始位置, 匹配序号)

INSTR在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索⼀次,就是说从字符的开始到字符的结尾就结束。

语法如下:instr( string1, string2 [, start_position [, nth_appearance ] ] )

参数分析:string1

源字符串,要在此字符串中查找。string2

要在string1中查找的字符串.start_position

代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在

源字符串中的开始索引。nth_appearance

代表要查找第⼏次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

注意:

如果String2在String1中没有找到,instr函数返回0.SQL> select instr('中q1abc','a',1) from dual;

INSTR('中Q1ABC','A',1)

----------------------

4

2、字符分解 substr

db2按字节数算,当遇到多字节字符时,会得出意想不到的结果。substr( string, start_position, [ length ] )

db2 => values substr('中abc',1,1)

1

-

substring(string,start_position,length,代码单元):

返回字符串的⼦字符串,⼦字符串是输⼊字符串的零个或多个相邻字符串长度单元。codeunits16和codeunits32代码单元按字符个数算。db2 => values substring('中avbc',1,1,codeunits16)

1

-------

Oracle中按字符数算,截取指定起始位置的字符串。substr( string, start_position, [ length ] )

SQL> select substr('中abc',1,1) from dual;

SU

--中

3、字符串长度单元 length

DB2:

使⽤ OCTETS 作为字符串长度单元时,通过简单地计算字符串的字节数即可确定字符串的长度。CODEUNITS16 指定将 Unicode UTF-16 ⽤于字符语义。同样,CODEUNITS32 指定使

⽤ Unicode UTF-32 来理解多字节字符的字符边界。

使⽤ CODEUNITS16 或 CODEUNITS32 计算代码单元得到的结果是相同的,除⾮使⽤了增补字符和代理对。使⽤增补字符时,对于⼀个增补字符,使⽤ CODEUNITS16 计算是两个UTF-16 代码单元,⽽使⽤ CODEUNITS32 计算则是⼀个 UTF-32 代码单元。

如果使⽤ CODEUNITS 来获取字符的长度,则⽤作字符串函数输⼊的 CODEUNITS 的不同会导致输出的不同。db2 => values CHARACTER_LENGTH('中',octets)

1

-----------

3

1 条记录已选择。

db2 => values CHARACTER_LENGTH('中',codeunits16)

1

-----------

1

1 条记录已选择。

db2 => values CHARACTER_LENGTH('中',codeunits32)

1

-----------

1

1 条记录已选择。

Oracle:

length按字符数算;lengthb按字节数算。

SQL> select length('中'),lengthb('中') from dual;

LENGTH('中') LENGTHB('中')

------------ -------------

1 2

4、去空格函数

LTRIM() 把字符串头部的空格去掉;

RTRIM() 把字符串尾部的空格去掉;

TRIM() 把字符串头和尾部的空格去掉。

5、⼤⼩写转换函数

LOWER()将字符串全部转为⼩写;

UPPER()将字符串全部转为⼤写。

6、ascii()

返回字符表达式最左端字符的ASCII 码值。

7、char()

db2中将ASCII 码转换为字符。如果没有输⼊0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。

8、连接字符串

db2:

select 'a'||'b' from sysibm.sysdummy1

Oracle:

select 'a'||'b' from dual

sqlserver:

select 'a'+ 'b'

9、替换函数 DB2中认为''和null不同

db2:value函数

db2 => values value(null,'a')--结果为a

db2 => values value('','a')--结果为空

Oracle:

nvl(par1,par2)--Oracle中null或''都代表为空

Sqlserver:

isnull(par1,par2)

10、返回参数集中第⼀个⾮null参数

values coalesce(null,null,'1')

11、LCASE、LOWER函数

语法:LCASE()、LOWER()

返回定长、变长字符串的⼩写形式

12、UCASE、UPPER函数返回定长、变长字符串的⼤写形式。

13、时间类型转换为字符类型

db2:

SELECT varchar(current timestamp) from sysibm.sysdummy1

Oracle:

ELECT to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dualsqlserver:

SELECT convert(varchar,getdate(),20)

14、db2的case when else

select case g.master_type

when 'system' then

'管理员'

when 'roletype' then

'特殊⾓⾊'

else

'普通⽤户'

end AS caseConvert

From global_code g;

15、DB2数据类型改变函数:varchar()、int()、date()、time()等

SQL Server: SELECT convert(varchar,getdate(),20)

Oracle:SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

DB2: SELECT varchar(current timestamp) from sysibm.sysdummy1

16、取前⼏条记录

SQL Server: Select top n * from xtable

Oracle:Select * from xtable where rownum <=n

DB2:select * from syscat.tables fetch first 10 rows only

17、repeat函数

语法:repeat(parm,int z)

将parm重复z次后输出select repeat('a',10) from sysibm.sysdummy1;

18、replace函数

语法:REPLACE(EXP1,EXP2,EXP3) REPLACE函数⽤EXP3代替EXP1中所有的EXP2。

db2 => select replace('abcde','bc','oo') from sysibm.sysdummy1

1

-----

aoode

19、REPEAT函数

语法:REPEAT(ARG1,NUM_TIMES) REPEAT函数返回ARG1被重复NUM_TIMES次的字符串。

eg:

SELECT REPEAT(NAME,2) FROM T1

20、POSSTR函数

语法:POSSTR(EXP1,EXP2) POSSTR函数返回EXP2在EXP1中第⼀次出现的位置。

db2 => select posstr('abca','a') from sysibm.sysdummy1

1

-----------

1

21、INSERT函数

语法:INSERT(ARG1,POS,SIZE,ARG2) INSERT函数返回⼀个字符串,将ARG1从POS处删除SIZE个字符,将ARG2插⼊该位置。

这⾥的pos是按字节数算的。如果转化成按字符数算,可以改写成:INSERT(ARG1,POS,SIZE,ARG2,CODEUNITS16)db2 => select insert('abcde',2,2,'中') from sysibm.sysdummy1

1

--------

a中de

22、CONCAT函数 等价于 ||

语法:CONCAT(ARG1,ARG2) CONCAT函数返回两个字符串的连接。

db2 => select concat('a','b') from sysibm.sysdummy1

1

--

ab

23、LEFT、RIGHT函数

语法:LEFT(ARG,LENGTH)、RIGHT(ARG,LENGTH) LEFT、RIGHT函数返回ARG最左边、右边的LENGTH个字符串,ARG可以是CHAR或BINARY STRING。

这两个函数的length参数是按字节数算。如果想转化成按字符数算,可以改写成LEFT(ARG,LENGTH,CODEUNITS16) db2 => select left('abcd',3),right('abcd',2) from sysibm.sysdummy1

合集下载

db2函数-v2

db2函数-v2

db2函数db2中用法次数hive替换方案

SUM22256sum

VALUEVALUE(EXPRESSION1,EXPRESSION2)18398coalesce(T v1, T v2)

COUNT4010count

CHARCHAR(ARG)3983cast(… as string) 或 string()

DECIMALDECIMAL(ARG)2973cast(… as decimal)

VARCHARVARCHAR(ARG)

VARCHAR(ARG,LENGTH)2706string(arg)

substr(string(arg), 0,int len)

DATEDATE(ARG)2404to_date(string timestamp)

MAX1502max

SUBSTR998substr(string A, int start, int len)

INT689cast(… as int) 或 int()

SIGN515sign(double a)

TRIM427trim(string A)

ROUND411round(double a)

RTRIM373rtrim(string A)

DECDEC(ARG)354cast(… as decimal)

MONTH311month(string date)

DAY259day(string date) dayofmonth(date)

DOUBLE231cast(… as double) 或 double()

UPPER209upper(string A) ucase(string A)

AVG188avg

DAYOFMONTH179dayofmonth(date)

MIN161min

MIN161max

BIGINT139cast(… as ) 或 bigint()

LENGTH136length(string A)

LTRIM129ltrim(string A)

YEAR115year

DAYSDAYS(expression)63datediff(string enddate, string "0001-01-

db2 字符串匹配函数

db2 字符串匹配函数

db2 字符串匹配函数

DB2是一款常用的关系型数据库管理系统,其中包含了许多字符串匹配函数,这些函数可以帮助我们在数据库中进行字符串的匹配、查找和替换等操作。本文将介绍一些常用的DB2字符串匹配函数,并详细说明它们的用法和功能。

一、LIKE函数

LIKE函数是DB2中最常用的字符串匹配函数之一。它可以用于在数据库中查找满足特定模式的字符串。LIKE函数的基本语法如下:

SELECT 列名 FROM 表名 WHERE 列名 LIKE '模式';

其中,模式可以使用通配符来表示特定的字符或字符序列。通配符包括:

- %:表示任意字符序列(包括空字符序列)。

- _:表示任意单个字符。

例如,我们可以使用以下语句查找所有以字母A开头的字符串:

SELECT 列名 FROM 表名 WHERE 列名 LIKE 'A%';

二、LOCATE函数

LOCATE函数可以用于查找子字符串在目标字符串中的位置。它的基本语法如下:

LOCATE(子字符串, 目标字符串, 起始位置);

其中,子字符串是要查找的字符串,目标字符串是要在其中查找的字符串,起始位置是查找的起始位置。如果找到了子字符串,则返回子字符串在目标字符串中的位置;如果未找到,则返回0。

例如,我们可以使用以下语句查找字符串"apple"在目标字符串中的位置:

SELECT LOCATE('apple', 列名) FROM 表名;

三、SUBSTR函数

SUBSTR函数可以用于截取字符串的子字符串。它的基本语法如下:

SUBSTR(字符串, 起始位置, 长度);

其中,字符串是要截取的字符串,起始位置是截取的起始位置,长度是要截取的子字符串的长度。

例如,我们可以使用以下语句截取字符串"apple"的前三个字符:

SELECT SUBSTR('apple', 1, 3) FROM 表名;

四、CONCAT函数

CONCAT函数可以用于连接多个字符串。它的基本语法如下:

db2时间转换函数

db2时间转换函数

db2时间转换函数

在DB2中,你可以使用多种函数来转换时间。以下是一些常用的时间转换函数:

1. CAST函数: 用于将一个数据类型转换为另一个数据类型。

```sql

SELECT CAST(column_name AS VARCHAR(10)) FROM table_name;

```

2. CONVERT函数: 类似于CAST函数,用于将一个数据类型转换为另一个数据类型。

```sql

SELECT CONVERT(VARCHAR(10), column_name) FROM table_name;

```

3. DATE格式化函数: 使用DATE()函数与格式字符串可以格式化日期。

```sql

SELECT DATE(column_name, 'YYYY-MM-DD') FROM table_name;

```

4. TIMESTAMP格式化函数: 使用TIMESTAMP()函数与格式字符串可以格式化日期和时间。

```sql

SELECT TIMESTAMP(column_name, 'YYYY-MM-DD HH:MI:SS') FROM

table_name;

```

5. YEAR(), MONTH(), DAY(): 从日期中提取年份、月份和日期。

```sql

SELECT YEAR(column_name), MONTH(column_name),

DAY(column_name) FROM table_name;

```

6. HOUR(), MINUTE(), SECOND(): 从时间戳中提取小时、分钟和秒。

```sql

SELECT HOUR(column_name), MINUTE(column_name),

SECOND(column_name) FROM table_name;

```

7. ADD_MONTHS(): 在日期上添加或减去月份。

```sql

db2当前时间函数

db2当前时间函数

- 1 - db2当前时间函数

在DB2数据库中,可以使用当前时间函数来获取当前的日期和时间。以下是一些常用的当前时间函数:

1. CURRENT_DATE:返回当前日期,格式为YYYY-MM-DD。

2. CURRENT_TIME:返回当前时间,格式为HH:MM:SS。

3. CURRENT_TIMESTAMP:返回当前日期和时间,格式为YYYY-MM-DD HH:MM:SS。

可以使用下面的SQL语句来获取当前时间:

SELECT CURRENT_TIMESTAMP FROM SYSIBM.SYSDUMMY1;

输出结果将显示当前的日期和时间。

除了以上的函数,还有一些其他的函数可以用来处理日期和时间。例如,DATE函数可以从一个日期或时间字符串中提取日期部分,而TIME函数可以从一个日期或时间字符串中提取时间部分。

在使用这些函数时,需要注意数据类型的转换问题。例如,如果要将一个字符串转换为日期或时间类型,可以使用CAST函数或CONVERT函数来进行转换。

总之,使用当前时间函数可以方便地获取当前的日期和时间,并且在处理日期和时间方面也非常实用。

Oracle中INSTR函数,及在DB2、Sybase中与Instr函数功能相同的函数

Oracle中INSTR函数,及在DB2、Sybase中与Instr函数功能相同的函数

Oracle中INSTR函数,及在DB2、Sybase中与Instr函数功能相同的函数

一、Oracle中INSTR函数

INSTR (源字符串, 目标字符串, 起始位置, 匹配序号)

在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。

语法如下:

instr( string1, string2 [, start_position [, nth_appearance ] ] )

参数分析: string1 源字符串,要在此字符串中查找。

string2 要在string1中查找的字符串.

start_position 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

nth_appearance 代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

注意: 如果String2在String1中没有找到,instr函数返回0.

示例: SELECT instr('syranmo','s') FROM dual; -- 返回 1

SELECT instr('syranmo','ra') FROM dual; -- 返回 3

SELECT instr('syran mo','a',1,2) FROM dual; -- 返回 0

(根据条件,由于a只出现一次,第四个参数2,就是说第2次出现a的位置,显然第2次是没有再出现了,所以结果返回0。注意空格也算一个字符!)

SELECT instr('syranmo','an',-1,1) FROM dual; -- 返回 4

(就算是由右到左数,索引的位置还是要看‘an’的左边第一个字母的位置,所以这里返回4)

db2 timestamp 函数

db2 timestamp 函数

db2 timestamp 函数

DB2是一个关系型数据库管理系统,它被广泛应用于企业级应用程序中。DB2提供了许多内置函数,用于执行各种操作和计算。其中,timestamp函数用于处理日期和时间数据。本文将逐步解释DB2的timestamp函数,并说明如何使用它进行日期和时间操作。

1. 什么是timestamp函数?

timestamp函数是DB2中与日期和时间相关的函数之一。它接受日期和时间作为输入,并返回一个包含日期和时间信息的特定格式的字符串。timestamp函数可以在SELECT语句中使用,也可以在INSERT或UPDATE语句中使用。

2. timestamp函数的语法是什么?

timestamp函数的基本语法如下:

TIMESTAMP (expression1 [AS timezone-expression])

其中,expression1是一个表示日期和时间的输入表达式。timezone-expression是一个可选的参数,用于指定时区信息。如果省略时区参数,timestamp函数将根据数据库配置的默认时区进行操作。

3. timestamp函数的用途是什么?

timestamp函数的主要用途是执行日期和时间相关的计算和操作。它可以用于以下方面:

- 将日期和时间数据转换为特定字符串格式,用于显示或存储。

- 比较两个日期或时间,并确定它们的顺序。

- 添加或减去一定的时间量,以实现日期和时间的偏移。

- 提取日期部分或时间部分,以获取特定的信息。

4. 如何使用timestamp函数进行日期和时间转换?

要将日期或时间转换为特定字符串格式,可以使用timestamp函数的以下用法之一:

- SELECT TIMESTAMP(date_column) FROM table_name;

- SELECT TIMESTAMP(time_column) FROM table_name;

DB2常用函数总结

1、VALUE函数

语法:VALUE(EXPRESSION1,EXPRESSION2)

VALUE函数是用返回一个非空的值,当其第一个参数非空,直接返回该参数的值,如果第一个参数为空,则返回第一个参数的值。

2、COALESCE函数

语法:COALESCE(ARG1,ARG2...)

COALESCE返回参数集中第一个非null参数。用法类似于VALUE函数。

3、LENGTH函数

语法:LENGTH(ARG)

LENGTH函数返回参数的长度。

4、LCASE、LOWER函数

语法:LCASE()、LOWER()

LCASE、LOWER函数返回定长、变长字符串的小写形式。

5、UCASE、UPPER函数

语法:UCASE()、UPPER()

UCASE、UPPER函数返回定长、变长字符串的大写形式。

6、LTRIM、RTRIM函数

语法:LTRIM()、RTRIM()

LTRIM、RTRIM函数从CHAR、VARCHAR、GRAPHIC或者VARGRAPHIC中去掉左侧或右侧的空格。

7、LEFT、RIGHT函数

语法:LEFT(ARG,LENGTH)、RIGHT(ARG,LENGTH)

LEFT、RIGHT函数返回ARG最左边、右边的LENGTH个字符串,ARG可以是CHAR或BINARY STRING。

8、CONCAT函数

语法:CONCAT(ARG1,ARG2)

CONCAT函数返回两个字符串的连接。

9、INSERT函数

语法:INSERT(ARG1,POS,SIZE,ARG2)

INSERT函数返回一个字符串,将ARG1从POS处删除SIZE个字符,将ARG2插入该位置。

select INSERT('zhongguonihao',6,3,'GUO') from

KFZ_ZYQ_TWH_JF where CUST_ID = 97130

返回:zhongGUOnihao

10、LOCATE函数

db2字符串的有关函数

一、字符转换函数

1、ASCII()

返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用„‟括起来,但含其它字符的字符串必须用„‟括起来使用,否则会出错。

2、CHAR()

将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。

3、LOWER()和UPPER()

LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。

4、STR()

把数值型数据转换为字符型数据。

STR ([,length[, ]])

length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。

当length 或者decimal 为负值时,返回NULL;

当length 小于小数点左边(包括符号位)的位数时,返回length 个*;

先服从length ,再取decimal ;

当返回的字符串位数小于length ,左边补足空格。

二、去空格函数

1、LTRIM() 把字符串头部的空格去掉。

2、RTRIM() 把字符串尾部的空格去掉。

三、取子串函数

1、left()

LEFT (, )

返回character_expression 左起 integer_expression 个字符。

2、RIGHT()

RIGHT (, )

返回character_expression 右起 integer_expression 个字符。

3、SUBSTRING()

SUBSTRING (, , length)

返回从字符串左边第starting_ position 个字符起length个字符的部分。

四、字符串比较函数

1、CHARINDEX()

返回字符串中某个指定的子串出现的开始位置。

db2 md5加密函数

db2 md5加密函数

DB2 MD5加密函数是一种常用的加密算法,它可以将任意长度的数据转换成固定长度的128位哈希值。这种哈希值是不可逆的,即无法通过哈希值反推出原始数据。因此,MD5加密函数被广泛应用于密码存储、数字签名等领域。

在DB2数据库中,MD5加密函数可以通过以下语法进行调用:

SELECT MD5(‘string’)

其中,‘string’是要加密的字符串。调用MD5函数后,将返回一个128位的哈希值,可以将其存储在数据库中,以保证密码的安全性。

MD5加密函数的优点在于其加密速度快、哈希值长度固定、不可逆等特点。但是,由于MD5算法存在一些安全漏洞,如碰撞攻击等,因此在一些安全性要求较高的场合,建议使用更加安全的加密算法,如SHA-256、SHA-512等。

除了MD5函数外,DB2数据库还提供了其他常用的加密函数,如SHA-1、SHA-256、SHA-512等。这些函数可以根据不同的安全需求进行选择,以保证数据的安全性。

DB2 MD5加密函数是一种常用的加密算法,可以有效保护密码等敏感信息的安全性。但是,在使用时需要注意其安全性漏洞,建议根据实际需求选择更加安全的加密算法。

db2 md5加密函数 2

db2 md5加密函数

DB2是一种关系型数据库管理系统,其提供了多种加密函数,其中包括MD5加密函数。MD5算法是一种常用的哈希算法,可以将任意长度的文本转换为固定长度的数字签名,常用于加密和校验数据。本文将介绍DB2中MD5加密函数的使用方法和注意事项。

一、MD5加密函数的语法和参数

在DB2中,MD5加密函数的语法如下:

```

SELECT MD5(string_expression) FROM table_name;

```

其中,string_expression表示要加密的字符串或表达式,可以是任意长度的字符型、二进制型或LOB型数据。如果要加密的是blob或clob类型的数据,需要使用getblob或getclob函数获取数据。返回值是一个128位的十六进制数字签名,长度为32个字符。

二、MD5加密函数的注意事项

1. MD5算法不可逆,不能通过加密结果反推出原文。

2. MD5加密函数只能处理字符串或LOB类型的数据,不能处理其他类型的数据。

3. 可以使用concat函数将多个字符串拼接成一个字符串,然后再进行MD5加密。例如:

```

SELECT MD5(concat(col1, col2, col3)) FROM table_name;

```

4. 对于二进制数据,需要先将其转换为十六进制字符串,然后再进行MD5加密。例如:

```

SELECT MD5(hex(binary_data)) FROM table_name;

```

5. 长度超过2GB的LOB类型数据不能直接进行MD5加密,需要使用LOCATOR函数分段读取,再进行MD5加密。

三、MD5加密函数的应用场景

1. 密码加密:在用户注册或修改密码时,将用户的密码进行MD5加密后存储。这样即使数据库被黑客盗取,也无法轻易获取到用户的密码。

2. 数据校验:对于需要验证数据完整性的场景,可以将原始数据进行MD5加密后存储,再比对后续传输的数据是否与加密结果一致,以确定数据是否被篡改。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档