还剩3页未读,继续阅读
文本内容:
问题1假设有一个表中有两列,类型都为为主键:T_Str varchar2,collcoll CO12aa3,1,4,6,8,0bb5,9,11,4,7,4现要将字符串中的数值升序排序输出:col2coll CO12aa0,1,3,4,6,8bb4,457,9,11解答创建表并插入测试数据--create tablet_strcoll varchar21000,col2varchar21000;「insert intot_str valuesaa5,9J1,4,7,4’;建立函数F N_SPLIT_STRING--CREATE ORREPLACE FUNCTIONFN_SPLIT_STRINGP_STRVARCHAR2RETURN T_STRING ASPV_STR T_STRING:=T_STRING;PV_DELIMITER VARCHAR210:=7;PV_LOOP INTEGER:=0;PV LENINTEGER:=0;PV STARTPOSINTEGER:=0;PV ENDPOSINTEGER:=0;PV_COLLIST VARCHAR21000;BEGINPV_LEN:=LENGTH PV.DELIMITER;PV COLLIST:=P STR;LOOPPV_ENDPOS:=INSTRPV_COLLIST,PV_DELIMITER;PV LOOP:=PV LOOP+1;PV_STR.EXTEND1;IF PV_ENDPOS0THENPV_STRPV_LOOP:=SUBSTRPV_COLLIST,0,PV_ENDPOS-1;PV STARTPOS:=PV ENDPOS+PV LEN;PV_COLLIST:=SUBSTRPV_COLLIST PV_STARTPOS;,ELSEPV_STRPV_LOOP:=PV.COLLIST;END IF;EXIT WHENPV ENDPOS=0;END LOOP;RETURN PVSTR;END;测试结果--DECLAREV_A VARCHAR2100:=NULL;BEGINFOR MYCURIN SELECTCOL1,COL2FROM T_STR LOOPFORMYCUR1IN SELECTCOLUMN_VALUE AFROMTABLEFN_SPLIT_STRINGMYCUR.COL2ORDER BYTO_NUMBERA DESCLOOPV_A:=MYCUR
1.A||,||V_A;END LOOP;DBMS_OUTPUT.PUT_LINEMYCUR.COL1||||V_A;V A:=NULL;END LOOP;END;问题2有表该表只有一列该列信息数据如下T,i,iNULL8请用语句求如下的结果集(一列)SQL01234请运用一条语句得到结果(不得运用子查询)答案select nvli,O fromT orderby nvli,O;。