1.求字持串的长度LENGTH您可用LENGTH函数求字符串的长度。
LENGTH返回一个数值。
该值等于参数中的字符个数。
例:使用LENGTH函数SQL>select Last_Name, length(Last_Name) from customer order by LastName;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_Name3.在字符串中查找模式例:使用LIKE运算符SQL>column description format a40 word_wrappedSQL>column title format a35SQL>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为字符表达式cexistion_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_trim;使用LENGTH函数人微言轻LPAD函数的参数:SQL>select lpad(my_col, length(my_col) + 8, 'you say') fromtest_trim;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, Day;9.转换字符串为ASCII值SQL>select Last_Name, SCAII(Last_Name) from Instructor order by Last_Name;10.当前日期和时间:SYSDATE11.转换日期为字符串语法: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_Date;在SUBSTR函数中嵌入to_char函数SQL>select Last_Name, First_Name, substr(to_char(Hire_date, 'MON), 1, 1) the_fist_letter_of_the_month from Employee;12.转换字符串为日期语法:to_date(string_value, date_format);SQL>select SYSDATE, to_date('07-04-1976', 'MM-DD-YYYY') from dual;13.日期和时间在to_char函数中使用时间格式:SQL>select Employee_id, (to_char(time, clocked_in, 'HH:MM:SS') Time_Clocked_In from Time_Clock;14.计算两个日期的差值SQL>select sysdate + 7 from dual;15.在Insert\Update等操作时,数字会自动转换为字符串。
数字字段可以用to_char转换为串。
16.格式化数值字段select to_char(Additional_Fees, '9,999.99') from Course;货币符号:select to_char(Additional_Fees, '¥9,999.99') from Course;科学计数法:select to_char(Additional_Fees, '9.9999EEEE') from Course;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) = 13020.求最大或最小值MAX和MIN。
21.替换NULLNVL(column, value)。
select nvl(Additional, 0) from Course;22.内部聚合函数COUNT函数:查找相异的行:DISTINCT分组:GROUP BY: select Department_id, count(*) from curse group by Department_id;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_id;23.EXISTSselect 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_Instructor;25.用子查询建立一个表create table Anthor as select * from instructor where 1 = 2;26.创建一个简单的视图create view Stueent_No_Personalasselect Student_ID, Last_Name, First_Name from Student;27.PL/SQL块的结构说明部分执行部分例外处理部分例:DECLAREmax_records CONSTANT int := 100;i int := 1;BEGINFOR i in 1..max_records LOOPINSERT 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表的一行。