求sql, 不用存储过程可以实现吧
CREATE OR REPLACE FUNCTION SPLIT (p_list VARCHAR2, p_sep VARCHAR2 := ',')
RETURN type_split PIPELINED
IS
l_idx PLS_INTEGER;
v_list VARCHAR2 (50) := p_list;
BEGIN
LOOP
l_idx := INSTR (v_list, p_sep);
IF l_idx > 0
THEN
PIPE ROW (SUBSTR (v_list, 1, l_idx - 1));
v_list := SUBSTR (v_list, l_idx + LENGTH (p_sep));
ELSE
PIPE ROW (v_list);
EXIT;
END IF;
END LOOP;
RETURN;
END SPLIT;
select * from table(split('bb','aa'));
返回的是一个表的2条数据 bb aa
不过该函数貌似不能解决下面的问题
如表 A 中a字段存了总金额99,userid 字段中存了aa,22,bb 这样的用户id数据,我要把金额平均分配给每个人
A
id userid je
-------
1 aa,22,bb 99
2 dd2,3a 2
........
我如何才能将该数据变成
id userid je
1 aa 33
1 22 33
1 bb 33
2 dd2 1
2 3a 1
........
别说表不合理,因为为了减少数据量 userid中的用户数可能会10几个, 试试看这样的性能如何
...全文
相关推荐
sql不用游标实现逐行处理
sql不用游标实现逐行处理 一个Insert语句一次插入3行到某个表中。触发器需要从Inserted表中读取每一行的主键送到另一个存储过程去处理。第一反应可能是使用游标循环遍历Inserted表读取主键然后调用存储过程。但在这种情况我们可以使用一个技巧:变量以及动态SQL语言。
MySQL存储过程中实现执行动态SQL语句的方法
主要介绍了MySQL存储过程中实现执行动态SQL语句的方法,实例分析了MySQL中构造及执行动态SQL语句的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
SQL语句创建存储过程
创建数据库的存储过程 要求: 实现增,删,查,改!!
SqlServer存储过程实现及拼接sql的注意点
这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改。由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面。 这里就出现了一个问题,我花费了好久才弄通! 其实就是很简单的一个SQL语句: update table1 set field1=value1,field2 = value2 where id = id 我写成什么样子了呢?大家且看: declare @tableName nvarchar(50), @field1 int, @field2 nvarchar, @i
sql存储过程根据生日求星座
sql存储过程根据生日求星座sql存储过程根据生日求星座


