求sql, 不用存储过程可以实现吧

xlongbuilder xlongbuilder 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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语言。

yanliat

MySQL存储过程中实现执行动态SQL语句的方法

主要介绍了MySQL存储过程中实现执行动态SQL语句的方法,实例分析了MySQL中构造及执行动态SQL语句的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

weixin_38499950

SQL语句创建存储过程

创建数据库的存储过程 要求: 实现增,删,查,改!!

freshman528

SqlServer存储过程实现及拼接sql的注意点

这里我昨天碰到的问题就是执行一段根据变量tableName对不同的表进行字段状态的更改。由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面。 这里就出现了一个问题,我花费了好久才弄通!   其实就是很简单的一个SQL语句:   update table1 set field1=value1,field2 = value2 where id = id   我写成什么样子了呢?大家且看:  declare @tableName nvarchar(50),       @field1 int,       @field2 nvarchar,       @i

weixin_38531210

sql存储过程根据生日求星座

sql存储过程根据生日求星座sql存储过程根据生日求星座

ozhy111
评论 14
收藏 已收藏
分享
返回顶部
xlongbuilder
Oracle 17,133 成员 55,258 内容