将小写金额转换为英文大写的SQL函数数据库教程

| 收藏本文 下载本文 作者:烬年

以下是小编整理了将小写金额转换为英文大写的SQL函数数据库教程(共含8篇),希望你喜欢,也可以帮助到您,欢迎分享!同时,但愿您也能像本文投稿人“烬年”一样,积极向本站投稿分享好文章。

将小写金额转换为英文大写的SQL函数数据库教程

篇1:将小写金额转换为英文大写的SQL函数数据库教程

大写|函数|金额|小写|转换

CREATE FUNCTION [dbo].[f_num_eng] (@num numeric(15,2))

RETURNS varchar(400) WITH ENCRYPTION

AS

BEGIN

--All rights reserved. pbsql

DECLARE @i int,@hundreds int,@tenth int,@one int

DECLARE @thousand int,@million int,@billion int

DECLARE @numbers varchar(400),@s varchar(15),@result varchar(400)

SET @numbers='one      two      three    four     five     '

+'six      seven    eight    nine     ten      '

+'eleven   twelve   thirteen fourteen fifteen  '

+'sixteen  seventeen eighteen nineteen '

+'twenty   thirty   forty    fifty    '

+'sixty    seventy  eighty   ninety   '

SET @s=RIGHT('000000000000000'+CAST(@num AS varchar(15)),15)

SET @billion=CAST(SUBSTRING(@s,1,3) AS int)--将12位整数分成4段:十亿、百万、千、百十个

SET @million=CAST(SUBSTRING(@s,4,3) AS int)

SET @thousand=CAST(SUBSTRING(@s,7,3) AS int)

SET @result=''

SET @i=0

WHILE @i<=3

BEGIN

SET @hundreds=CAST(SUBSTRING(@s,@i*3+1,1) AS int)--百位0-9

SET @tenth=CAST(SUBSTRING(@s,@i*3+2,1) AS int)

SET @one=(CASE @tenth WHEN 1 THEN 10 ELSE 0 END)+CAST(SUBSTRING(@s,@i*3+3,1) AS int)--个位0-19

SET @tenth=(CASE WHEN @tenth<=1 THEN 0 ELSE @tenth END)--十位0、2-9

IF (@i=1 and @billion>0 and (@million>0 or @thousand>0 or @hundreds>0)) or

(@i=2 and (@billion>0 or @million>0) and (@thousand>0 or @hundreds>0)) or

(@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds>0))

SET @result=@result+', '--百位不是0则每段之间加连接符,

IF (@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds=0 and (@tenth>0 or @one>0)))

SET @result=@result+' and '--百位是0则加连接符AND

IF @hundreds>0

SET @result=@result+RTRIM(SUBSTRING(@numbers,@hundreds*10-9,10))+' hundred'

IF @tenth>=2 and @tenth<=9

BEGIN

IF @hundreds>0

SET @result=@result+' and '

SET @result=@result+RTRIM(SUBSTRING(@numbers,@tenth*10+171,10))

END

IF @one>=1 and @one<=19

BEGIN

IF @tenth>0

SET @result=@result+'-'

ELSE

IF @hundreds>0

SET @result=@result+' and '

SET @result=@result+RTRIM(SUBSTRING(@numbers,@one*10-9,10))

END

IF @i=0 and @billion>0

SET @result=@result+' billion'

IF @i=1 and @million>0

SET @result=@result+' million'

IF @i=2 and @thousand>0

SET @result=@result+' thousand'

SET @i=@i+1

END

IF SUBSTRING(@s,14,2)'00'

BEGIN

SET @result=@result+' point '

IF SUBSTRING(@s,14,1)='0'

SET @result=@result+'zero'

ELSE

SET @result=@result+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,14,1) AS int)*10-9,10))

IF SUBSTRING(@s,15,1)'0'

SET @result=@result+' '+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,15,1) AS int)*10-9,10))

END

RETURN(@result)

END

篇2:将小写金额转换为中文大写的SQL函数数据库教程

大写|函数|金额|小写|中文|转换

CREATE FUNCTION [dbo].[f_num_chn] (@num numeric(14,2))

RETURNS varchar(100) WITH ENCRYPTION

AS

BEGIN

--版权所有:pbsql

DECLARE @n_data VARCHAR(20),@c_data VARCHAR(100),@n_str VARCHAR(10),@i int

SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS bigint) AS varchar(20)),14)

SET @c_data=''

SET @i=1

WHILE @i<=14

BEGIN

SET @n_str=SUBSTRING(@n_data,@i,1)

IF @n_str' '

BEGIN

IF not ((SUBSTRING(@n_data,@i,2)='00') or

((@n_str='0') and ((@i=4) or (@i=8) or (@i=12) or (@i=14))))

SET @c_data=@c_data+SUBSTRING('零壹贰叁肆伍陆柒捌玖',CAST(@n_str AS int)+1,1)

IF not ((@n_str='0') and (@i4) and (@i8) and (@i12))

SET @c_data=@c_data+SUBSTRING('仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1)

IF SUBSTRING(@c_data,LEN(@c_data)-1,2)='亿万'

SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1)

END

SET @i=@i+1

END

IF @num<0

SET @c_data='(负数)'+@c_data

IF @num=0

SET @c_data='零圆'

IF @n_str='0'

SET @c_data=@c_data+'整'

RETURN(@c_data)

END

篇3:Excel金额小写转大写公式

近来转了转几个Excel相关论坛,发现有部分网友在寻求数字金额转换为人民币大写的方法,出于好奇,我在网上搜索了一番,什么VBA、加载宏,公式函数各式方法争相亮相,应有尽有。但我的习惯是,只要能用公式解决的问题,坚决不使用VBA。所以我就特别地关注使用公式来生成的方法,结果是用公式的方法可谓是更加地灿烂缤纷,使人眼花缭乱。

通过分析我收集到的二十几个公式,发现比较牛,适合我口味的公式有三个,在此我将其列出。

公式一:

SUBSTITUTE(SUBSTITUTE(IF(A1《0, “负”,“”)&TEXT(TRUNC(ABS(ROUND(A1,2))),“[DBNum2]”)& “元”&IF(ISERR(FIND(“。”,ROUND(A1,2))),“”,TEXT(RIGHT(TRUNC(ROUND(A1,2)*10)),“[DBNum2]”))&IF(ISERR(FIND(“.0”,TEXT(A1,“0.00”))), “角”,“”)&IF(LEFT(RIGHT(ROUND(A1,2),3))= “。”,TEXT(RIGHT(ROUND(A1,2)),“[DBNum2]”)&“分”,IF(ROUND(A1,2)=0,“”, “整”)),“零元零”,“”),“零元”,“”)

公式二:

CONCATENATE(IF(A1《0, “负”,“”),TEXT(IF(TRUNC(A1)=0,“”,TRUNC(ABS(A1))),“[DBNum2]”),IF(INT(TRUNC(A1))=0,“”, “元”),TEXT(IF(OR(ABS(A1) 《0.1,TRUNC(A1)=A1),“”,RIGHT(TRUNC(A1*10),1)),“[DBNum2]”),IF(RIGHT(TRUNC(A1*10),1)=“0”,“”, “角”),TEXT(IF(RIGHT(TRUNC(A1*100),1)=“0”,“”,RIGHT(TRUNC(A1*100),1)),“[DBNum2]”),IF(RIGHT(TRUNC(A1*100),1)=“0”,“”, “分”))

公式三:

IF(ROUND(A1,2)=0,“”,IF(ROUND(ABS(A1),2)》=1,TEXT(INT(ROUND(ABS(A1),2)),“[DBNum2]”)& amp;“元”,“”)&IF(RIGHT(TEXT(A1,“.00”),2)*1=0, “整”,IF(RIGHT(TEXT(A1,“.00”),4)*1》=1,IF(RIGHT(TEXT(A1,“.00”),2)*1》9,“”, “零”),IF(ROUND(ABS(A1),2)》=1,“零”,“”))&IF(RIGHT(TEXT(A1,“.00”),2)*1》 9,TEXT(LEFT(RIGHT(TEXT(A1,“.00”),2)),“[DBNum2]”)& “角”,“”)&IF(RIGHT(TEXT(A1,“.00”))*1》 0,TEXT(RIGHT(TEXT(A1,“.00”)),“[DBNum2]”)&“分”,“整”)))

我用不同的数值对这三个公式进行了一番测试,都达到了我的要求,至少到目前为止还没有发现上述公式存在着什么错误,

上述公式对负数的处理采取了不同的方法。公式一和公式二对负数是在其前部加上一个“负”字,而公式三则是按正数进行处理。我比较推崇公式三的方式,不是还有条件格式可以设置吗?若是负数就用条件格式来变为红色。

我不准备在此对上述公式进行分析解说。撰写本文的目的是我也想自己来“组装”一个所谓的通用公式。我只所以说是“组装”而不是叫什么“开发”或者是“拼凑”,是因为EXCEL的函数现成地摆在了那里,使用时就是为了达到某种目的,按照其固有的规则,将其进行有机的组合,可谓“组装”。但是在这个过程中,也是要开动脑筋的,并非是随随便便“拼凑”就能成功的。本文的目的就是想将我在“组装”公式时的思路展现出来。

若用程序设计语言(比如用C语言)来写一个人民币数字金额转大写金额会怎样考虑呢?我想每一位数字都要考虑到。但在EXCEL中,单元格格式中有一个“特殊”格式,里面就有将小写数字转换为大写数字的格式。但要注意的是,这里转换的是数字而不是金额。所以转换出来后并不存在“元”、“角”、 “分”、“整”等在大写金额中出现的字。但是,“元”只出现在整数部分的后面,而小数部分只有角分两位。这样只要利用EXCEL的“特殊”格式将数据分为整数部分、角位和分位三个部分来处理就行了。处理的顺序是先整数,再角位、再分位。

由于要分三个部分分别处理,然后根据情况分别与“元”,“角”,“分”及“整”相连接。连接的方式可以使用CONCATENATE函数,如公式二,也可以使用连接符&。而用&来连接,公式结构似乎会相对简单清晰一些,所以我选择了用&来连接。

虽然对问题进行了分解,但需要考虑的细节相当多。

若单元格为0或者空,输出空,避免出现“零”、“零元”等字样。对非数字字符不进行处理,使用EXCEL自身的错误提示。

对负数按正数处理,再用条件格式将其转换为红色,不拟采用“负XXXXXX”的形式。

篇4:将选择题转换为数据库格式

随着信息技术的不断普及,许多学校实现了无纸化考试,教师将收集的试题输入数据库,考试时从数据库中随机抽取试题生成试卷,学生可在计算机上直接答题,这种新型的考试方式大大提高了工作效率。一般来说,题库中的试题大多要求用数据库格式录入,而平时教师们写教案、出试卷都是用Word,对VFP、Access、Excel等用得较少。况且,用数据库格式录入试卷也不是很方便。这就产生了一个问题,如何将用Word方式录入的试题(本文以选择题为例)转换为Excel电子表格或DBF文件格式呢?

思路分析

对于把有分隔字符(该符号用来分隔每个字段)的文本文件转换为Excel电子表格,大家可能都比较熟悉。因此只要将以Word方式录入的选择题转换为有分隔字符的文本文件就大功告成了。可见,此步骤是关键一步。如图1是以Word方式录入的选择题,如图2是将图1转换后的Excel数据库格式。从图2中可以看到,一道题包括题干及四个选项,题干及选项分属不同字段,题与题之间用段落符分隔(即分行),题干与各选项间用分隔字符分列。了解上述思路后,我们就可以进行转换了。

图1“Word中的题目

图2”Excel中的题目

问题解决

1.设立分隔字符,将文档保存为纯文本文件由于文档输入的格式有所不同,如图1所示第一题中各选项间有空格,这里还需去除选项间的空格。打开“查找与替换”对话框,在查找内容栏输入“^w”(“^w”为空格标志符,点击“高级→特殊字符”即可找到),替换栏为空白,点击[全部替换]按钮,这样就删除了文本中的空白区域。按照题干与各选项间用分隔字符分列的思路,我们分别在题干与选项A、选项A与选项B、选项B与选项C、选项C与选项D间设立分隔字符,分隔字符一定要是特殊符号且文档中所没有的,本文以?A HREF=“mailto:@”为例。具体方法如下:打开图1所示的文档,复制“A、”,执行“编辑→替换”命令,将光标停放在查找栏,按下“Ctrl+V”键,在查找栏输入“A、””>@”为例。具体方法如下:打开图1所示的文档,复制“A、”,执行“编辑→替换”命令,将光标停放在查找栏,按下“Ctrl+V”键,在查找栏输入“A、” ,

在替换栏中输入?A HREF=“mailto:@”>@ A、”,点击[全部替换]按钮,这样文中所有的选项“A、”被替换成了?A HREF=“mailto:@”>@ A、”,同样,将“B、”替换成?A HREF=“mailto:@”>@ B、”,将“C、”替换成?A HREF=“mailto:@C、”,将“D、”替换成“@D、”。由于图1第二题中选项间有段落符标志,需要去除选项间的段落标志符,在“查找与替换”对话框中,将“^p@”替换为“@”(“^p”为段落标志符,点击[特殊字符]按钮即可找到),去掉“@”字符前的所有段落标志符。最后结果如图3,然后将该文档另存为纯文本文件。”>@C、”,将“D、”替换成“@D、”。由于图1第二题中选项间有段落符标志,需要去除选项间的段落标志符,在“查找与替换”对话框中,将“^p@”替换为“@”(“^p”为段落标志符,点击[特殊字符]按钮即可找到),去掉“@”字符前的所有段落标志符。最后结果如图3,然后将该文档另存为纯文本文件。

图3“加入分隔符的文本文件2.将纯文本文件转换为Excel电子表格在Excel空白文档中,执行“文件→打开”命令,打开刚才保存的纯文本文件,出现如图4所示对话框,选中“分隔符号”,然后单击[下一步]。在如图5所示的对话框中,选中“其他”复选框,然后输入字符?A HREF=”mailto:@”,单击[下一步],最后点击[完成]。这样,就将文本文档转换成了Excel数据表格。“>@”,单击[下一步],最后点击[完成]。这样,就将文本文档转换成了Excel数据表格。

图4”选中“分隔符号”这时转换的数据格式还不是十分理想,还需要对Excel数据表格进行单元格格式设置。首先手工调整各列的适当列宽。选中整个数据,然后点击“格式→单元格”,打开“单元格格式”对话框,单击“对齐”选项卡,选中“自动换行”复选框,在“垂直对齐”下拉菜单中选择“居中”,按下[确定]按钮。最后执行“格式→行→最适合的行高”命令,文档就自动对得整整齐齐了,效果如图2。

图5“选中“其他”复选框

小结

1.本例是将Word中录入的选择题转换为Excel电子表格,利用Excel的导出功能可以很轻松地将Excel表格转换为Access及DBF文件等。2.以Word方式录入的选择题尽管格式各不相同,但在转换时只要把握两条原则:(1)题干与各选项间排列紧凑并用分隔字符分列。(2)题与题之间用段落符分行,然后进行巧妙替换。

篇5:日期时间转换为日期的SQL语句数据库教程

语句|转换

--每个分解在合并

select CONVERT(datetime, DATENAME(yyyy,getdate) + '-' + DATENAME(mm,getdate()) + '-' + DATENAME(dd, getdate()))

--取有效部分转换

select convert(datetime,left(convert(varchar(10),getdate()),10))

--问题:有没有更好的?

篇6:[转]甲骨文函数数据库教程

函数

SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL>select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

A        A     ZERO    SPACE--------- --------- --------- ---------      65       97       48       32

2.CHR给出整数,返回对应的字符;SQL>select chr(54740) zhao,chr(65) chr65 from dual;

ZH C-- -赵 A

3.CONCAT连接两个字符串;SQL>select concat('010-','88888888')||'转23' 高乾竞电话 from dual;

高乾竞电话----------------010-88888888转23

4.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL>select initcap('smith') upp from dual;

UPP-----Smith

5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1   被搜索的字符串C2   希望搜索的字符串I    搜索的开始位置,默认为1J    出现的位置,默认为1SQL>select instr('oracle traning','ra',1,2) instring from dual;

INSTRING---------       9

6.LENGTH返回字符串的长度;SQL>select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;

NAME  LENGTH(NAME) ADDR            LENGTH(ADDR)      SAL LENGTH(TO_CHAR(SAL))------ ------------ ---------------- ------------ --------- --------------------高乾竞           3 北京市海锭区               6  9999.99                   7

7.LOWER返回字符串,并将所有的字符小写SQL>select lower('AaBbCcDd')AaBbCcDd from dual;

AABBCCDD--------aabbccdd

8.UPPER返回字符串,并将所有的字符大写SQL>select upper('AaBbCcDd') upper from dual;

UPPER--------AABBCCDD

9.RPAD和LPAD(粘贴字符)RPAD 在列的右边粘贴字符LPAD 在列的左边粘贴字符SQL>select lpad(rpad('gao',10,'*'),17,'*')from dual;

LPAD(RPAD('GAO',1-----------------*******gao*******不够字符则用*来填满

10.LTRIM和RTRIMLTRIM 删除左边出现的字符串RTRIM 删除右边出现的字符串SQL>select ltrim(rtrim('  gao qian jing  ',' '),' ') from dual;

LTRIM(RTRIM('-------------gao qian jing

11.SUBSTR(string,start,count)取子字符串,从start开始,取count个SQL>select substr('13088888888',3,8) from dual;

SUBSTR('--------08888888

12.REPLACE('string','s1','s2')string  希望被替换的字符或变量 s1      被替换的字符串s2      要替换的字符串SQL>select replace('he love you','he','i') from dual;

REPLACE('H----------i love you

13.SOUNDEX返回一个与给定的字符串读音相同的字符串SQL>create table table1(xm varchar(8));SQL>insert into table1 values('weather');SQL>insert into table1 values('wether');SQL>insert into table1 values('gao');

SQL>select xm from table1 where soundex(xm)=soundex('weather');

XM--------weatherwether

14.TRIM('s' from 'string')LEADING  剪掉前面的字符TRAILING 剪掉后面的字符如果不指定,默认为空格符

15.ABS返回指定值的绝对值SQL>select abs(100),abs(-100) from dual;

ABS(100) ABS(-100)--------- ---------     100      100

16.ACOS给出反余弦的值SQL>select acos(-1) from dual;

ACOS(-1)---------3.1415927

17.ASIN给出反正弦的值SQL>select asin(0.5) from dual;

ASIN(0.5)---------.52359878

18.ATAN返回一个数字的反正切值SQL>select atan(1) from dual;

ATAN(1)---------.78539816

19.CEIL返回大于或等于给出数字的最小整数SQL>select ceil(3.1415927) from dual;

CEIL(3.1415927)---------------             4

20.COS返回一个给定数字的余弦SQL>select cos(-3.1415927) from dual;

COS(-3.1415927)---------------            -1

21.COSH返回一个数字反余弦值SQL>select cosh(20) from dual;

COSH(20)---------242582598

22.EXP返回一个数字e的n次方根SQL>select exp(2),exp(1) from dual;

EXP(2)   EXP(1)--------- ---------7.3890561 2.7182818

23.FLOOR对给定的数字取整数SQL>select floor(2345.67) from dual;

FLOOR(2345.67)--------------         2345

24.LN返回一个数字的对数值SQL>select ln(1),ln(2),ln(2.7182818) from dual;

LN(1)    LN(2) LN(2.7182818)--------- --------- -------------       0 .69314718    .99999999

25.LOG(n1,n2)返回一个以n1为底n2的对数 SQL>select log(2,1),log(2,4) from dual;

LOG(2,1) LOG(2,4)--------- ---------       0        2

26.MOD(n1,n2)返回一个n1除以n2的余数SQL>select mod(10,3),mod(3,3),mod(2,3) from dual;

MOD(10,3) MOD(3,3) MOD(2,3)--------- --------- ---------       1        0        2

27.POWER返回n1的n2次方根SQL>select power(2,10),power(3,3) from dual;

POWER(2,10) POWER(3,3)----------- ----------      1024        27

28.ROUND和TRUNC按照指定的精度进行舍入SQL>select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;

ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)----------- ------------ ----------- ------------        56         -55         55         -55

29.SIGN取数字n的符号,大于0返回1,小于0返回-1,等于0返回0SQL>select sign(123),sign(-100),sign(0) from dual;

SIGN(123) SIGN(-100)  SIGN(0)--------- ---------- ---------       1        -1        0

30.SIN返回一个数字的正弦值SQL>select sin(1.57079) from dual;

SIN(1.57079)------------          1

31.SIGH返回双曲正弦的值SQL>select sin(20),sinh(20) from dual;

SIN(20) SINH(20)--------- ---------.91294525 242582598

32.SQRT返回数字n的根SQL>select sqrt(64),sqrt(10) from dual;

SQRT(64) SQRT(10)--------- ---------       8 3.1622777

33.TAN返回数字的正切值SQL>select tan(20),tan(10) from dual;

TAN(20)  TAN(10)--------- ---------2.2371609 .64836083

34.TANH返回数字n的双曲正切值SQL>select tanh(20),tan(20) from dual;

TANH(20)  TAN(20)--------- ---------       1 2.2371609

35.TRUNC按照指定的精度截取一个数SQL>select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;

TRUNC1 TRUNC(124.16666,2)--------- ------------------     100            124.16

36.ADD_MONTHS增加或减去月份SQL>select to_char(add_months(to_date('12','yyyymm'),2),'yyyymm') from dual;

TO_CHA------02SQL>select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;

TO_CHA------199910

37.LAST_DAY返回日期的最后一天SQL>select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;

TO_CHAR(SY TO_CHAR((S---------- ----------.05.09 2004.05.10SQL>select last_day(sysdate) from dual;

LAST_DAY(S----------31-5月 -04

38.MONTHS_BETWEEN(date2,date1)给出date2-date1的月份SQL>select months_between('19-12月-1999','19-3月-1999') mon_between from dual;

MON_BETWEEN-----------         9SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('.05.20','yyyy.mm.dd')) mon_betw from dual;

MON_BETW---------     -60

39.NEW_TIME(date,'this','that')给出在this时区=other时区的日期和时间SQL>select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time 2 (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;

BJ_TIME            LOS_ANGLES------------------- -------------------2004.05.09 11:05:32 2004.05.09 18:05:32

40.NEXT_DAY(date,'day')给出日期date和星期x之后计算下一个星期的日期SQL>select next_day('18-5月-','星期五') next_day from dual;

NEXT_DAY----------25-5月 -01

41.SYSDATE用来得到系统的当前日期SQL>select to_char(sysdate,'dd-mm-yyyy day') from dual;

TO_CHAR(SYSDATE,'-----------------09-05-2004 星期日trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒SQL>select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh, 2 to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;

HH                 HHMM------------------- -------------------2004.05.09 11:00:00 2004.05.09 11:17:00

42.CHARTOROWID将字符数据类型转换为ROWID类型SQL>select rowid,rowidtochar(rowid),ename from scott.emp;

ROWID             ROWIDTOCHAR(ROWID) ENAME------------------ ------------------ ----------AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITHAAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLENAAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARDAAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES

43.CONVERT(c,dset,sset)将源字符串 sset从一个语言字符集转换到另一个目的dset字符集SQL>select convert('strutz','we8hp','f7dec') ”conversion“ from dual;

conver------strutz

44.HEXTORAW将一个十六进制构成的字符串转换为二进制

45.RAWTOHEXT将一个二进制构成的字符串转换为十六进制

46.ROWIDTOCHAR将ROWID数据类型转换为字符类型

47.TO_CHAR(date,'format')SQL>select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY-------------------2004/05/09 21:14:41

48.TO_DATE(string,'format')将字符串转化为ORACLE中的一个日期

49.TO_MULTI_BYTE将字符串中的单字节字符转化为多字节字符SQL> select to_multi_byte('高') from dual;

TO--高

50.TO_NUMBER将给出的字符转换为数字SQL>select to_number('1999') year from dual;

YEAR---------    1999

51.BFILENAME(dir,file)指定一个外部二进制文件SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));

52.CONVERT('x','desc','source')将x字段或变量的源source转换为descSQL>select sid,serial#,username,decode(command, 2 0,'none', 3 2,'insert', 4 3, 5 'select', 6 6,'update', 7 7,'delete', 8 8,'drop', 9 'other') cmd from v$session where type!='background';

SID  SERIAL# USERNAME                      CMD--------- --------- ------------------------------ ------       1        1                               none       2        1                               none       3        1                               none       4        1                               none       5        1                               none       6        1                               none       7     1275                               none       8     1275                               none       9       20 GAO                           select      10       40 GAO                           none

53.DUMP(s,fmt,start,length)DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值SQL>col global_name for a30SQL>col dump_string for a50SQL>set lin 200SQL>select global_name,dump(global_name,1017,8,5) dump_string from global_name;

GLOBAL_NAME                   DUMP_STRING------------------------------ --------------------------------------------------ORACLE.WORLD                  Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D

54.EMPTY_BLOB()和EMPTY_CLOB()这两个函数都是用来对大数据类型字段进行初始化操作的函数

55.GREATEST返回一组表达式中的最大值,即比较字符的编码大小.SQL>select greatest('AA','AB','AC') from dual;

GR--ACSQL>select greatest('啊','安','天') from dual;

GR--天

56.LEAST返回一组表达式中的最小值 SQL>select least('啊','安','天') from dual;

LE--啊

57.UID返回标识当前用户的唯一整数SQL>show userUSER 为”GAO“SQL>select username,user_id from dba_users where user_id=uid;

USERNAME                        USER_ID------------------------------ ---------GAO                                  25

58.USER返回当前用户的名字SQL>select user from dual;

USER------------------------------GAO

59.USEREVN返回当前用户环境的信息,opt可以是:ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZEISDBA 查看当前用户是否是DBA如果是则返回trueSQL>select userenv('isdba') from dual;

USEREN------FALSESQL>select userenv('isdba') from dual;

USEREN------TRUESESSION返回会话标志SQL>select userenv('sessionid') from dual;

USERENV('SESSIONID')--------------------                152ENTRYID返回会话人口标志SQL>select userenv('entryid') from dual;

USERENV('ENTRYID')------------------                0INSTANCE返回当前INSTANCE的标志SQL>select userenv('instance') from dual;

USERENV('INSTANCE')-------------------                 1LANGUAGE返回当前环境变量SQL>select userenv('language') from dual;

USERENV('LANGUAGE')----------------------------------------------------SIMPLIFIED CHINESE_CHINA.ZHS16GBKLANG返回当前环境的语言的缩写SQL>select userenv('lang') from dual;

USERENV('LANG')----------------------------------------------------ZHSTERMINAL返回用户的终端或机器的标志SQL>select userenv('terminal') from dual;

USERENV('TERMINA----------------GAOVSIZE(X)返回X的大小(字节)数SQL>select vsize(user),user from dual;

VSIZE(USER) USER----------- ------------------------------         6 SYSTEM

60.AVG(DISTINCT|ALL)all表示对所有的值求平均值,distinct只对不同的值求平均值SQLWKS>create table table3(xm varchar(8),sal number(7,2));语句已处理,

[转]甲骨文函数大全数据库教程

SQLWKS> insert into table3 values('gao',1111.11);SQLWKS> insert into table3 values('gao',1111.11);SQLWKS> insert into table3 values('zhu',5555.55);SQLWKS>commit;

SQL>select avg(distinct sal) from gao.table3;

AVG(DISTINCTSAL)----------------        3333.33

SQL>select avg(all sal) from gao.table3;

AVG(ALLSAL)-----------   2592.59

61.MAX(DISTINCT|ALL)求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次SQL>select max(distinct sal) from scott.emp;

MAX(DISTINCTSAL)----------------           5000

62.MIN(DISTINCT|ALL)求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次SQL>select min(all sal) from gao.table3;

MIN(ALLSAL)-----------   1111.11

63.STDDEV(distinct|all)求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差SQL>select stddev(sal) from scott.emp;

STDDEV(SAL)----------- 1182.5032

SQL>select stddev(distinct sal) from scott.emp;

STDDEV(DISTINCTSAL)-------------------          1229.951

64.VARIANCE(DISTINCT|ALL)求协方差

SQL>select variance(sal) from scott.emp;

VARIANCE(SAL)-------------   1398313.9

65.GROUP BY主要用来对一组数进行统计SQL>select deptno,count(*),sum(sal) from scott.emp group by deptno;

DEPTNO COUNT(*) SUM(SAL)--------- --------- ---------      10        3     8750      20        5    10875      30        6     9400

66.HAVING对分组统计再加限制条件SQL>select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;

DEPTNO COUNT(*) SUM(SAL)--------- --------- ---------      20        5    10875      30        6     9400SQL>select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by deptno ;

DEPTNO COUNT(*) SUM(SAL)--------- --------- ---------      20        5    10875      30        6     9400

67.ORDER BY用于对查询到的结果进行排序输出SQL>select deptno,ename,sal from scott.emp order by deptno,sal desc;

DEPTNO ENAME           SAL--------- ---------- ---------      10 KING           5000      10 CLARK          2450      10 MILLER         1300      20 SCOTT          3000      20 FORD           3000      20 JONES          2975      20 ADAMS          1100      20 SMITH           800      30 BLAKE          2850      30 ALLEN          1600      30 TURNER         1500      30 WARD           1250      30 MARTIN         1250      30 JAMES           950

篇7:一个将小写金额转换成大写的程序Windows系统

#include”ibe.h“ inttobig(char*m,char*out) { char*q,k[1024],d[1024],dw[1024],ch; intj,i; bufc lr (d); bufclr(k); bufclr(dw); q=k; i=(strlen(m)-1)*2; strcpy(d,”零壹贰叁肆伍陆柒捌玖“); strcpy(dw,”分角元拾佰仟万拾佰仟亿“); for(j=1;j=strlen(m);

#include ”ibe.h“

int tobig(char *m, char * out)

{

char *q,k[1024],d[1024],dw[1024],ch;

int j,i;

bufclr(d);

bufclr(k);

bufclr(dw);

q=k;

i=(strlen(m)-1)*2;

strcpy(d,”零壹贰叁肆伍陆柒捌玖“);

strcpy(dw,”分角元拾佰仟万拾佰仟亿“);

for (j=1;j<=strlen(m);j++)

{

ch=m[j-1];

memcpy(q,&d[atoi(&ch)*2],2);

q=q+2;

memcpy(q,&dw[i],2);

i=i-2;

q=q+2;

}

strcpy(out,k);

}

main

{

char rp[1024];

bufclr(rp);

tobig(”1234560100“,rp);

printf(”%s“,rp);

}

vprofessor 回复于:2004-07-14 21:29:26这个程序写的很简练,但是转换后的大写金额不规范啊,有时也不正确,如30.00。转换后为:叁佰零拾零元零角零分

htldm 回复于:2004-07-15 07:17:43#include

char str[64] = ”币“;

char tbl0[] = ”零壹贰叁肆伍陆柒捌玖“;

char tbl1[] = ”万仟佰拾亿仟佰拾万仟佰拾元 角分整“;

char* UPMONEY( double mony )

{

char buf[17];

int i, j, c, p;

sprintf(buf, ”%16.2lf“, mony);

printf( ”%s \n“, buf );

p = 2;

j = 0;

for( i = 0; i < 16; i++)

{

switch( c = buf[i] )

{

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9':

if( j != 0 )

{

str[p++] = tbl0[0];     /* 零 */

str[p++] = tbl0[1];

}

c = 2 * (c - '0');

str[p++] = tbl0[c++];       /* 数 */

str[p++] = tbl0[c++];

str[p++] = tbl1[2*i];       /* 数的位 */

str[p++] = tbl1[2*i+1];

j = 0;

break;

case '0':

j++;

if( ((j<4) && ((i == 4) || ( i == 8 ))) ||

( i == 12 ) )

{

str[p++] = tbl1[2*i];     /* 亿 万 元 */

str[p++] = tbl1[2*i+1];

}

break;

case ' ':

break;

case '.':

break;

};

}

if( (j>=2 ) && ( i == 16 ) )

{

str[p++] = tbl1[2*i];     /* 整 */

str[p++] = tbl1[2*i+1];

}

str[p] = '\0';

return(str);

}

main()

{

double l;

char str[64];

printf(”please insert a number:“);

scanf(”%lf“,&l);

sprintf(str,”%s“,UPMONEY(l));

printf(”the number is %s“,str);

}

ecloud 回复于:2004-07-16 13:03:22我以前有个python写的,算是比较完善的,发在www.linuxforum.net的Python版面,现在公司网络有点问题登不上,你们可以去看看,我都忘得差不多了

hongqi 回复于:2004-07-16 21:59:38不错

sqbcai 回复于:2004-07-25 22:32:39不知有无shell写的此类程序?

sdclearcase/” target=“_blank” >ccf 回复于:2004-07-25 23:06:44有shell写的,搜索一下.

feiyan98 回复于:2004-11-11 20:51:25在个位不为0的整数转换时,没有‘整’字,

比如89.00转换后是‘币八十九元’,没有整。

请问该怎样修改?谢谢!

纳兰婷 回复于:2004-11-11 20:53:12谢谢~~~收藏

wayy 回复于:2005-03-22 19:52:15[quote:ffa66ec6cd=“sqbcai”]不知有无shell写的此类程序?[/quote:ffa66ec6cd]

有,需要的话跟我联系,等我有空传上来看一下也可以.

原文转自:www.ltesting.net

篇8:SQL的基本命令和几个常用函数数据库教程

函数

--创建对象(表、视图、存储过程、函数)命令]

CREATE TABLE/VIEW/PROCEDURE/FUNCTION

--创建表

CREATE TABLE tabTestVB

(VbName varchar(10),value numeric(10))

GO

CREATE TABLE tabTestVB1

(VbName varchar(10),value1 numeric(10))

GO

--插入数据(两种方式)

INSERT INTO tabTestVB(VbName,value)

SELECT 'AAA',123

INSERT INTO tabTestVB1(VbName,value1)

SELECT 'AAA',456

INSERT INTO tabTestVB(VbName,value) VALUES ('BBB',345)

INSERT INTO tabTestVB1(VbName,value1) VALUES ('CCC',1002)

--更改数据

UPDATE tabTestVB SET value=798 WHERE VbName='AAA'

--关联更改

UPDATE tabTestVB SET value=tabTestVB1.value1

FROM tabTestVB1 WHERE tabTestVB.VbName=tabTestVB1.VbName

--删除数据

DELETE tabTestVB WHERE VbName='AAA'

--无日志删除数据

TRUNCATE TABLE tabTestVB

--删除对象(表、视图、存储过程、函数)命令

DROP TABLE/VIEW/PROC/FUNCTION

--删除表

DROP TABLE tabTestVB

DROP TABLE tabTestVB1

--赋值命令

SET

--定义变量

DECLARE

--流程控制语句

WHILE ... BREAK

BEGIN ... END

IF ...ELSE

----1...100 的和

DECLARE @NN NUMERIC(3)

DECLARE @SUM NUMERIC(8)

SET @NN=1

SET @SUM=0

WHILE @NN<=100

BEGIN

SET @SUM=@SUM+@NN

SET @NN=@NN+1

END

SELECT @SUM

--加上条件:当@NN=20 时退出循环(计算出1...19的和)

DECLARE @NN NUMERIC(3)

DECLARE @SUM NUMERIC(8)

SET @NN=1

SET @SUM=0

WHILE @NN<=100

BEGIN

IF @NN20

--BEGIN

SET @SUM=@SUM+@NN

--END

ELSE

--BEGIN

BREAK

--END

SET @NN=@NN+1

END

SELECT @SUM

--全局变量

@@ROWCOUNT

--返回受上一语句影响的行数

SELECT '1'

UNION ALL

SELECT '3'

SELECT @@ROWCOUNT

@@ERROR

--返回最后执行的 Transact-SQL 语句的错误代码,

SQL的基本命令和几个常用函数汇总数据库教程

SET @N =1

SELECT @@ERROR

----函数的使用

--返回当前日期

SELECT GETDATE()

--生成16进制的标志列uniqueidentifier

SELECT NEWID()

--转换数据类型和格式

SELECT CONVERT(VARCHAR(10),GETDATE(),120)

将PPT文件转换为Word

SQL Server数据库性能优化数据库教程

远程管理SQL数据的方法数据库教程

UDF―SQL Server 的新特性数据库教程

SQL分隔字符串的存储过程数据库教程

SQL SERVER数据库备份和恢复存储过程(加强版本)数据库教程

将小写金额转换为英文大写的SQL函数数据库教程(共8篇)

欢迎下载DOC格式的将小写金额转换为英文大写的SQL函数数据库教程,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式

相关文章

热门推荐

HOT

猜你喜欢

NEW
点击下载本文文档