sql语句数字转字符串有强制字符串转数字的函数吗

随笔 - 53&
文章 - 0&评论 - 26&trackbacks - 0
1.求字持串的长度LENGTH您可用LENGTH函数求字符串的长度。LENGTH返回一个数值。该值等于参数中的字符个数。例:使用LENGTH函数&&& SQL>select Last_Name, length(Last_Name) from customer order by LastN
2.使用SUBSTR函数从字符串中提取子串语法:&&& SUBSTR函数的语法如下:&&& SUBSTR(string, string charcter, number of charcters)&&& 变量定义如下:&&& string为字符列或字符串表达式  string charcter为子串的起始位置  number of charcters为返回字符的个数c例:说明了怎样使用SUBSTR函数取得教师的姓的前四个字符&&& SQL>select last_Name, substr(Last_Name, 1, 4) from instector order by Last_Name例:在SUBSTR函数中使用LENGTH函数(取后三个字符)&&& 5Qt.>select last_Name, substr(Last_Name, Length(Last_Name) - 2, 3) from instector order by Last_Name
3.在字符串中查找模式例:使用LIKE运算符&&& SQL>column description format a40 word_wrapped&&& SQL>column title format a35&&& SQL>select Title, Description from Course where Description like '%thory%' or Description like '%theories%';
4.替换字符串的一部分& 经常遇到的数据操纵任务是在特定的列中将数据由一种模式转换成另一种模式。& 假设您希望在Course表中改变课程说明,将说明中的字seminar用字discussion替代.那么您可用oracle提供的函数REPLACE,该函数使得某列的字符串能被另一字符串代替。语法:&&& REPLACE函数的语法如下:&&& REPLACE(string, existion_string, [replacement_string])&&& 变量定义如下:&&& string为字符表达式c&&& existion_string为已存在的字符串。&&& replacement_string为用来替代的可选字符串。例:使用REPLACE函数  显示了在Course表中如何使用REPLACE来改变课程名称(title):首先使用查询显示当前课程名称,UPDATE语句中使用REPLACE函数将SEMINAR改变成DISCUSSION,另一查询显示了UPDATE语句的效果。&&& SQL>update Course set Title = replace(Title, 'SEMINAR', "DISCUSSION');注:如果在REPLACE函数中您没有指明用什么字符串去替代,则列中的原字符串将被删除。
5.删除字符串的空格  如果字符串列中包含前导或尾部空格,按某指定值对列进行查询,很可能返回错误结果。LTRIM和RTRIM。
6.LPAD左填充函数使用LPAD对字符串进行左填充。语法:&&& LPAD(string, n, pad_string);&&& 变量定义如下:  string为需左填充的字符串直接值或字符申列。  n为LPAD返回的字符串长度。  pad_string为左填充到string的字符串。  SQL>select lpad(my_col, 20) from test_  使用LENGTH函数人微言轻LPAD函数的参数:  SQL>select lpad(my_col, length(my_col) + 8, 'you say') from test_
7.改变字符串的大小写  oracle提供了三个改变字符串大小写的函数:  INITCAP转换每个字的第一个字符为大写  LOWER转换所有字符为小写  UPPER转换所有字符为人写
8.使用DECODE函数(值转换函数)转换字符串语法&&& DECODE的语法是:&&& DECODE(expression, value1, returned_value1, ... valueN, returned_valueN, [default_returned_value]变量定义如下:  Dexpression为合法的oracle表达式。  valueN为此expression可能取的值:  returned_valueN为expression等于valueN时DECODE的返回值。  default_returned_value为可选项,它是expression不等于任何valueN时DECODE的返回值。  SQL>select Schedult_id, Day, decode(Day, 1, 'sun', 2, 'mon', 3, 'tue', 4, 'wed', 5, 'thu', 6, 'fri', 7, 'sat')&&&&&&&& from Schedult_Type_Details order by Schedult_id, D
9.转换字符串为ASCII值  SQL>select Last_Name, SCAII(Last_Name) from Instructor order by Last_N
10.当前日期和时间:SYSDATE
11.转换日期为字符串语法:&&& T0_CHAR函数的格式如下:&&& TO_CHAR(date_value,format)  SQL>select Last_Name, First_Name, to_char(Hire_Date, "MONTH DD, YYYY') H_DATE from Employee order by Hire_D  在SUBSTR函数中嵌入to_char函数  SQL>select Last_Name, First_Name, substr(to_char(Hire_date, 'MON), 1, 1) the_fist_letter_of_the_month from E
12.转换字符串为日期语法:  to_date(string_value, date_format);  SQL>select SYSDATE, to_date('07-04-1976', 'MM-DD-YYYY')
13.日期和时间  在to_char函数中使用时间格式:  SQL&select Employee_id, (to_char(time, clocked_in, 'HH:MM:SS') Time_Clocked_In from Time_C
14.计算两个日期的差值  SQL&select sysdate + 7
15.在Insert\Update等操作时,数字会自动转换为字符串。数字字段可以用to_char转换为串。
16.格式化数值字段  select to_char(Additional_Fees, '9,999.99') from C  货币符号:  select to_char(Additional_Fees, '¥9,999.99') from C  科学计数法:  select to_char(Additional_Fees, '9.9999EEEE') from C
17.将字符串转换成数字  to_number是to_char的逆运算。  update Security_Price set Last_Qtr_EPS = to_number('$2.81', '$999.99');
18.内部统计函数  AVG(value):计算平均值,它的参数来自于它所作用的若干行。  STDDEV(value):返回它所作用的若干行作为参数的标准差。  VARIANCE(value):返回它所作用的若干行作为参数的。
19.四舍五入函数和截取函数  四舍五入ROUND(value, [scale]) ROUND(101.8) = 102 Round(123.37, 1) = 123.4  截取TRUNC(value, [scale]) Trunc(123.33) = 123 Trunc(123.567, 2) = 123.56  求最大整数FLOOR(value) Floor(128.3)=128 Floor(129.8) = 129 除了不能截取小数部分外,Floor几乎等同于Trunc函数。  求最小整数CELL(value) Cell(128.3)=129 Cell(129.8) = 130
20.求最大或最小值  MAX和MIN。
21.替换NULL  NVL(column, value)。  select nvl(Additional, 0) from C
22.内部聚合函数  COUNT函数:  查找相异的行:DISTINCT  分组:GROUP BY: select Department_id, count(*) from curse group by Department_  group by 和having: select Department_id, count(*) from Course group by Department_id having count(*) = 4; --哪些部门开设了4门课。  avg和group by: select Department_id, avg(Additional_Fees) from Course group by Department_
23.EXISTS  select Last_Name, Fist_Name from Instructor I where exists(select * from Class C where I.Instruetor_id = C.Instructor_id);
24.SELECT语句的集合操作  INTERSECE(交)&&& UNION(并): select Epicenter_Latitude, Epicenter_Longtitude from UNSD_Event UNION select Location_Lat, Location_Lon, Richter_Number from RIND_Event order by 1;&&& MINUS(差): select Last_Name, First_Name from Instructor minus select Last_Name, First_Name from Hoover_I&&& 25.用子查询建立一个表  create table Anthor as select * from instructor where 1 = 2;
26.创建一个简单的视图  create view Stueent_No_Personal&&& as&&& select Student_ID, Last_Name, First_Name from S&&& 27.PL/SQL块的结构  说明部分  执行部分  例外处理部分  例:  DECLARE   max_records CONSTANT int := 100;&&&&& i int := 1;&&& BEGIN&&&&& FOR i in 1..max_records LOOP&&&&&&& INSERT INTO test_table(record_number, current_date) values(i, sysdate);&&&&& END LOOP;&&&&& COMMIT;&& END;&& /
28.用%TYPE声明一个变量  例:为了说明一个用来储存修理仓库技师名字的变量,可这样 Tech_Name Dept_Esimate.Techican %TYPE;
29.用%ROWTYPE声明一个变量  例:用一个复合变量存储Depot_Estimate表的一行。 Depot_Est_Row Depot_Esimate %ROWTYPE;  Depot_Est_Row的元素可以用以下方法使用:Depot_Est_Row.Techniciam := 'yujj';
30.一些常见的控制结构  IF语句:  if MOD(i, 5) = 0 then   rec_number := 5;&&& elseif MOD(i, 7) = 0 then&&&&& rec_number := 7;&&& else&&&&& rec_number :=&&&&&& &&& 简单的LOOP/EXIT语句:&&& LOOP&&&   EXIT WHEN...;&&& ENDLOOP;&&& &&& WHILE_LOOP语句:&&& WHILE i &100 LOOP&&&&& i := i + 1;&&& END LOOP;&&& &&& FOR_LOOP语句:&&& for i in 1..max loop&&&&& i :=& i + 1;&&&&& dbms_output.put_line('j:'||to_char(j));&&&&&& &&& GOTO语句:&&& goto more_&&& ...&&& &&more_processing&&&&& ...&&&&&& &&& NULL语句:&&& if (mod(i, 10) = 0 ) then&&&&& i := i + 1;&&& else&&&&& NULL;&&&&&& &&& 赋值语句:&&& pl/sql中使用:=进行赋值。&&& 31.在PL/SQL中使用SQL语句&&& PL/SQL和SELECT语句:&&& set serveroutput on&&& declare&&&&& Average_Body_Temp Patient.Body_Temp.Deg_F%TYPE;&&& begin&&&&& dbms_output.&&&&& select avg(Body_Temp_Deg_F) into Average_Body_Temp from P&&&&& dbms_putput.put_line('Average body temp is Deg.F:' || to_char(Average_Body_Temp.'999.99'));&&&&&& &&& 子块的应用:&&& 一个匿名块,它包含另一个子块&&& declare&&&&& max_i constrant int := 100;&&&&& i int := 1;&&&&& rec_&&& begin&&&&& for i in 1..max_i loop&&&&&&& if mod(i, 5) = 0 then&&&&&&&&& rec_number := 5;&&&&&&& else&&&&&&&&& rec_number :=&&&&&&&&&&&&&& insert into test_table(record_number, current_date) values(record_number, sysdate);&&&&&&& &&&&&&& -- H&&&&&&& declare&&&&&&&&& max_j constrant int := 20;&&&&&&&&& j int := 1;&&&&&&& begin&&&&&&&&& for j in 1..max_&&&&&&&&&&& rec_number := rec_number *&&&&&&&&&&& insert into test_table(record_number, current_date) values(record_number, sysdate);&&&&&&&&&&&&&&&&&&&&&&&& &&& 一个过程的示例:&&& declare&&&&& New_Patient_ID Patient.Patient_ID%TYPE;&&&&& High_Fever constant real := 42.0;&&& &&& procedure Record_Patient_Temp_Deg_C(Patient_ID varchar2, Body_Temp_Deg_C real) is&&& Temp_Deg_F&&& begin&&&&& Temp_Deg_F := (9.0/5.0)*Body_Temp_Deg_C + 32.0;&&&&& insert into Patient(Patient_ID, Body_Temp_Deg_F) values(Patient_ID, TempDeg_F);&&&&&&&&&&& &&& begin&&&&& New_Patient_ID := 'GG9999';&&&&& Record_Patient_Temp_Deg_C(New_Patient_ID, High_Fever);&&&&&& /&&& --一个过程内声明的变量在过程体外不能被使用。&&& &&& 一个函数的示例:&&& function Max_Additional_Fees(Dept_ID IN varchar2)&&&&& return varchar2 is&&&&& Additional_Fees Course.Additional.Fees%TYPE;&&& begin&&&&& ...&&&&&&&&&&& &&& 过程和函数的参数类型:IN/OUT/IN OUT&&& 32.关于dbms_output包的调用:先输入
33.系统视图USER_SOURCE,保存有过程、函数、包等。它有以下四列:  NAME 包括过程、函数、包或包体的名字  TYPE 批出源代码是属于过程、函数包还是包体  TEXT 包含源代码中的一行  LINE 包含在TEXT中源代码所包含的行数  例:select line, text from user_source where name = 'DROP_CLASS'
34.SELECT和存储函数:  在SELECT中可以使用存在的存储函数&&& create or replac function DegF_add10(Deg_F IN number)&&&&& return number is&&& Deg_C&&& begin&&&&& deg_c := deg_f + 10;&&&&& return deg_c;&&& end DegF_add10;&&& &&& select body_temp, DegF_add10(body_temp)
35.附加PL/SQL数据类型&&& boolean&&& binary_integer, natural, positive&&& %type&&& %rowtype&&& pl/sql表或数组&&& 用户自定义记录&&& 36.ORACLE预定义例外  DUP_VAL_ON_INDEX:当SQL语句要在存在唯一索引的列中建立重复数据时发生。  INVALID_NUMBER:当SQL语句指定无效数字时发生。  NO_DATTE_FOUND:当SELECT语句没有返回任何行时发生。  TOO_MANY_ROWS:在PL/SQL环境中,一条SELECT语句检索多行数据时发生。为了从一个查询检索任意数目的行,可使用游标,可将游标看成是查询返回结果的窗口。    在pl/sql中,一条SELECT语句返回多个数据行时就会发生这个例外。  VALUE_ERROR:多数情况与截断和转换误差有关。如给一个varchar2(5)的字段赋值长度超过5的字符串。
37.SQLCODE和SQLERRM  SQLCODE包括当前执行oracle pl/sql语句的错误状态。如果SQL语句没有错误,则SQLCODE为0;  SQLERRM包括与SQLCODE相关的错误信息。如果SQL语句执行成功,则SQLCODE为0,SQLERRM为一个字符串:ORA_0000:normal,successful completion.
38.使用游标的步骤  1.说明(declare)游标,给游标起个名字,并且与SELECT语句在语法上相关联。  2.打开(open)游标,Oracle RDBMS执行与游标相关的查询,并确定所限定的行(活动集)。  3.用游标提取数据行:将每一行的值返回到PL/SQL子程序环境中,一次返回一行。  4.关闭(close)游标,释放相关资源。
39.说明游标  CURSOR cursor_name&&& [(parameter1 parameter1_datetype[ := default1],&&& ..&&& [parameterN parameterN_datetype[ := derfaultN])]&&& IS select_&40.打开游标&& Open cursor_&& 说明:如果在定义游标时,没有声明参数的类型,在OPEN游标时,必须给相关的参数指定变量或是直接值。如open tempcur(20,30);
41.从游标中取出行&&& loop&&&&& fetch tmpcur into field1, field2;&&&&& exit when tmpcur%&&&&& &&&&& dbms_output.put_line(field1);&&&
42.关闭游标&&&&&& 43.取游标返回的行数  dbms_output.put_line(tmpcur%rowcount);
44.在oracle数据库中查询结果的行号使用伪列ROWNUM表示(从1开始)。!!!数据库分页可以使用它!!!&&& 例如select * from employee where rownum&10 返回前10条记录。但因为rownum是在查询之后排序之前赋值的,所以查询employee按birthday排序的第100到120条记录应该这么写:&&& select * from (&&&&& select my_table.*, rownum as my_rownum from (select name, birthday from employee order by birthday&&&&&&& ) my_table where rownum &120&&& )where my_rownum&=100&&& 例:给多表查询的结果加上序列号  select rownum as "SerialNo", b."pName", a."compName" from "fundCompAccount" a, "fundPersonAccount" b   where a."compAccount" = b."compAccount";
--以上已经打印  Oracle选定前20条数据&   select * from "fundDuty" where rownum & 20;&&& Oracle选定21至40条数据&&&&& select * from "fundDuty" where rownum &=40&&&&& minus&&&&& select * from "fundDuty" where rownum &=21
阅读(...) 评论()今天在把一些数据导入到SQL Server的时候遇到有个列被导入成float类型,而我实际需要的是varchar类型,所以要进行类型转换,转换时遇到了一点问题,所以写这篇博客记录一下。
SQL Server中的数值类型分为两种,一种是精确的数值类型,具体的数据类型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,这些数据类型能够精确的表明某以数值;另一种是近似的数值类型,具体就是float和real。浮点数据为近似值,因此,并非数据类型范围内的所有值都能精确地表示。
有些时候我们需要将这些数值类型转换为字符串类型,用到的转换函数就是cast和convert,这两个函数的作用都是进行类型转换,只不过语法格式不同。据说在转换时还是有一定的区别的,不过我个人更习惯于使用convert函数,应该这个函数一方面更像是个函数的语法,另一方面在做时间和数值转换成字符串时还可以指定转换的格式。
对于精确数值的数据类型,转换出来的字符串就是我们存储的数值。比如:
declare @i int
set @i=print 'test:'+convert(varchar(20),@i)输出就是:test:
而如果对于近似数值的数据类型,那么可就没有那么简单了。
declare @i float
set @i=print 'test:'+convert(varchar(20),@i)输出结果:test:1.2
输出的结果是使用科学计数法来表示的,再看看可否通过指定转换样式来指定不使用科学计数法呢?帮助文档中说到float 或 real 转换为字符数据时的 style 值:
0(默认值)最大为 6 位数。根据需要使用科学记数法。
1 始终为 8 位值。始终使用科学记数法。
2 始终为 16 位值。始终使用科学记数法。
我们的值是,超过了6位数.所以不管是0还是1,2结果都会使用科学计数法来表示。那么要怎么样才能将我们的数据不转换成科学计数法而输出呢?比较简单的办法就是将近似数据转换为精确数据,然后再将精确数据转换成字符串。
同样以上面的例子为例, 进行两次数据类型的转换如下:
declare @i float
set @i=print 'test:'+convert(varchar(20),convert(int,@i))输出:test:
如果是有小数,那么我们要转换出小数位的话,可以转换成decimal,转换出的小数位数在定义decimal时指定。比如要输出4位小数,那么转换代码是:
declare @i float
set @i=print 'test:'+convert(varchar(20),convert(decimal(18,4),@i))输出:test:00
阅读(...) 评论()sql 中将数字转换为字符串―STR()_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
sql 中将数字转换为字符串―STR()
&&sql 中将数字转换为字符串―STR()
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢2005年11月 扩充话题大版内专家分月排行榜第三
2009年11月 Oracle大版内专家分月排行榜第二2009年10月 Oracle大版内专家分月排行榜第二
2009年5月 Oracle大版内专家分月排行榜第三
2016年1月 Oracle大版内专家分月排行榜第一2015年6月 Oracle大版内专家分月排行榜第一2015年4月 Oracle大版内专家分月排行榜第一2015年3月 Oracle大版内专家分月排行榜第一2015年2月 Oracle大版内专家分月排行榜第一2014年6月 Oracle大版内专家分月排行榜第一2009年11月 Oracle大版内专家分月排行榜第一2009年10月 Oracle大版内专家分月排行榜第一
2015年9月 Oracle大版内专家分月排行榜第二2015年7月 Oracle大版内专家分月排行榜第二2015年1月 Oracle大版内专家分月排行榜第二2014年12月 Oracle大版内专家分月排行榜第二2014年11月 Oracle大版内专家分月排行榜第二2014年8月 Oracle大版内专家分月排行榜第二2014年7月 Oracle大版内专家分月排行榜第二2014年5月 Oracle大版内专家分月排行榜第二2010年1月 Oracle大版内专家分月排行榜第二2009年9月 Oracle大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。中国领先的IT技术网站
51CTO旗下网站
SQL中的4种字符转换函数
SQL语言中有多种的函数,下面为您介绍其中的字符转换函数,共有4种,供您参考,希望对您能够有所帮助。
作者:佚名来源:互联网| 17:22
语言中有多种的函数,下面为您介绍其中的字符转换函数,共有4种,供您参考,希望对您学习SQL能够有所帮助。
1、ASCII()
返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用&&括起来,但含其它字符的字符串必须用&&括起来使用,否则会出错。
将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。
3、LOWER()和UPPER()
LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。
把数值型数据转换为字符型数据。
STR (&float_expression&[,length[, &decimal&]])
length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。
当length 或者decimal 为负值时,返回NULL;
当length 小于小数点左边(包括符号位)的位数时,返回length 个*;
先服从length ,再取decimal ;
当返回的字符串位数小于length ,左边补足空格。
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条热点头条头条热点
24H热文一周话题本月最赞
讲师:132069人学习过
讲师:252140人学习过
讲师:13032人学习过
精选博文论坛热帖下载排行
本书专门根据SUN官方的SCSA for Solaris 9&10考试大纲撰写而成,全面覆盖了SCSA for Solaris 9/10的认证考点,除此之外本书还有大量的非考...
订阅51CTO邮刊

我要回帖

更多关于 字符串转数字的函数 的文章

 

随机推荐