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 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
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录