国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > DB2 > 正文

DB2中REVERSE函數的實現方法

2020-01-31 14:51:53
字體:
來源:轉載
供稿:網友

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:

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函數,因為有一定的應用場景。

CREATE OR REPLACE FUNCTION REVERSE( p1 varchar(200)) RETURNS VARCHAR(200) SPECIFIC "REVERSE" LANGUAGE SQL DETERMINISTIC NO EXTERNAL ACTION READS SQL DATABEGIN 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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 深泽县| 贵州省| 年辖:市辖区| 乌兰浩特市| 深州市| 濮阳市| 松原市| 洛川县| 乐清市| 大荔县| 商洛市| 马边| 峡江县| 阿克| 秦安县| 子洲县| 贵州省| 浦北县| 武平县| 临海市| 云南省| 北宁市| 嘉峪关市| 台山市| 三江| 新泰市| 根河市| 建德市| 德庆县| 濉溪县| 文昌市| 嘉定区| 三门县| 东丽区| 北京市| 历史| 东安县| 崇文区| 班玛县| 鲜城| 丰顺县|