服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - DB2 - DB2中REVERSE函数的实现方法

DB2中REVERSE函数的实现方法

2020-06-06 17:30DB2数据库教程网 DB2

有哥们在群里问DB2有没有自带的reverse函数,我测试一下,DB2确实内置该函数,但是oracle,sql server都内置了该函数,来看一下

ORACLE:

SQL> select reverse('1234') from dual;

REVERSE(
--------
4321

SQL> select reverse(12121) from dual;
select reverse(12121) from dual
               *
第 1 行出现错误:
ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER

说明oracle中reverse的参数是char类型,返回值也是char,到底是不是这样,我们来验证一下

SQL> select length(reverse('1234    ')) from dual;

LENGTH(REVERSE('1234'))
-----------------------
                      8

SQL> select reverse('1234    ') from dual;

REVERSE('1234')
----------------
    4321

如果返回类型是varchar,长度应该是4,所以返回值是char。参数类型也应该是是char。

sql server:

DB2中REVERSE函数的实现方法

 

reverse函数的参数类型varchar或nvarchar,返回类型也是varchar或nvarchar

C:\>sqlcmd -S kermart -U sa -P sa -d master
1> select reverse('1234');
2> go

----
4321

(1 行受影响)
1> select reverse(1234);  --发生类型转换,应该可以从执行计划中看出来
2> go

------------
4321

(1 行受影响)

 
基于oracle,sql server都内置了reverse函数,DB2也应该有它的reverse函数,因为有一定的应用场景。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE OR REPLACE FUNCTION REVERSE
(
 p1 varchar(200)
)
 RETURNS VARCHAR(200)
 SPECIFIC "REVERSE"
 LANGUAGE SQL
 DETERMINISTIC
 NO EXTERNAL ACTION
 READS SQL DATA
BEGIN
 
 declare v_str varchar(100) default '';
 DECLARE v_index INTEGER--定义下标
 SET v_index = length(p1);
 WHILE(v_index >= 1) DO
  SET v_str = v_str||substr(p1,v_index,1);
  SET v_index = v_index - 1;
 END WHILE;
 return v_str;
END@

测试一下

select reverse('123456') from dual;

654321

select reverse(1234) from dual; --看执行计划,应该可以看到类型转换

4321

延伸 · 阅读

精彩推荐
  • DB2CentOS下DB2数据库安装过程详解

    CentOS下DB2数据库安装过程详解

    这篇文章主要介绍了CentOS下DB2数据库安装过程详解,本文步骤详细,操作的命令也比较全,需要的朋友可以参考下 ...

    DB2数据库教程网3572020-06-06
  • DB2DB2 SELECT语句高级用法

    DB2 SELECT语句高级用法

    DB2 SELECT语句高级用法,学习db2数据库的朋友可以参考下。 ...

    DB2数据库教程网6242020-06-08
  • DB2DB2 UDB V8.1管理学习笔记(三)

    DB2 UDB V8.1管理学习笔记(三)

    本文主要讲解DB2 UDB V8.1管理学习笔记(三),有需要的朋友可以参考下 ...

    DB2数据库教程网3182020-06-03
  • DB2如何访问大型机、小型机上的DB2 9数据服务器

    如何访问大型机、小型机上的DB2 9数据服务器

    数据库连接工具软件 DB2 connect的基本特性是为桌面应用程序和服务主机的数据库服务器之间提供一种连接交互访问的方法。这些桌面应用程序所在的环境可...

    脚本之家3242020-06-10
  • DB2db2数据库常用操作命令大全

    db2数据库常用操作命令大全

    这篇文章主要介绍了db2数据库常用操作命令大全,汇总了DB2的常用操作命令,分享给大家供大家参考,需要的朋友可以参考下...

    db2教程网6962021-10-21
  • DB2DB2专家王云谈商业智能BI

    DB2专家王云谈商业智能BI

    王云说: 既然讲商业智能,我们大家都在讲及时性,我们讲要有绩效,要有BPM,我自己就来看看我们能不能在这个会场上,我们来实践一下,如果大家抬头...

    DB2数据库教程网4202020-06-10
  • DB2分析DB2活动日志满的原因及解决DB2日志满方法与避免方案

    分析DB2活动日志满的原因及解决DB2日志满方法与避免方案

    本文简单地介绍了DB2中日志的使用、活动日志以及首个活动日志的概念、日志满的原因、日志满的诊断、临时处理以及避免办法 ...

    wdc3462020-06-05
  • DB2python之sqlalchemy创建表的实例详解

    python之sqlalchemy创建表的实例详解

    这篇文章主要介绍了数据库之sqlalchemy创建表的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握理解这部分内容,需要的朋友可以参考下...

    wait_for_eva8502020-06-11