导读
实际项目开发过程中,可能会遇到这种情况,A表中A1字段存储B表中的内码如(1,2,3),此时需要将A表中的A1字段转中文,为了方便理解,我们这里创建学生表和老师表,一个学生对应N个老师。
创建表
学生表
--学生表 CREATE TABLE S_STUDENT ( S_ID NUMBER, S_NAME VARCHAR2(50), T_ID VARCHAR2(50) ) --插入一条数据 INSERT INTO S_STUDENT VALUES (1,‘陈彦斌‘,‘1,2,3‘)
老师表
--老师表 CREATE TABLE T_TEACHER( T_ID NUMBER, T_NAME VARCHAR2(50) ) --插入三条数据 INSERT INTO T_TEACHER VALUES (1,‘语文‘); INSERT INTO T_TEACHER VALUES (2,‘数学‘); INSERT INTO T_TEACHER VALUES (3,‘英语‘);
数据
学生数据集
老师数据集
目标结果集
最终SQL
SELECT S.S_ID, S.S_NAME, S.T_ID, TO_CHAR((SELECT WM_CONCAT(T_NAME) FROM T_TEACHER T WHERE INSTR( ‘,‘ || S.T_ID || ‘,‘ , ‘,‘ || T.T_ID || ‘,‘ ) > 0)) T_ID_NAME FROM S_STUDENT S --前期准备 --WM_CONCAT:函数将列转行,并用“,”分割开来 --INSTR:字符查找函数,返回索引位置,格式--> INSTR(源字符串,目标字符串)
结尾
如果对你有小小的帮助,记得帮忙点个推荐哟!~~