如何利用存储过程执行表字段中的sql语句
答案:2 悬赏:80
解决时间 2021-03-03 10:19
- 提问者网友:低唤何为爱
- 2021-03-02 15:03
如何利用存储过程执行表字段中的sql语句
最佳答案
- 二级知识专家网友:厭世為王
- 2021-03-02 15:15
您好,是这样的:
实用ltrim或者rtrim函数去掉左边或右边符合条件的字符。
如果是oracle环境,看你这里都是字母在前数字在后的格式,假设旧列叫 col_old,新的字母列是col_str,新的数字列是col_num
update table1 set
col_str=rtrim(col_old,'1234567890'),
col_num=to_number(ltrim(col_old,rtrim(col_old,'1234567890')))
ql server 有没有这个函数不知道了,反正这是一个思路吧。供参考而已,
sql没有这个东西,那我就给你提个思路吧,语句你自己写了,我没有环境。
用ASCII码和sql的ltrim和rtrim来做,你需要循环找到从左起每个字符都是ASCII>=65(9以上即字母)的,直到找到ASCII<=64的就结束,这样可以把这个字符部分的长度得到,在用trim函数截取一下就可以了。
实用ltrim或者rtrim函数去掉左边或右边符合条件的字符。
如果是oracle环境,看你这里都是字母在前数字在后的格式,假设旧列叫 col_old,新的字母列是col_str,新的数字列是col_num
update table1 set
col_str=rtrim(col_old,'1234567890'),
col_num=to_number(ltrim(col_old,rtrim(col_old,'1234567890')))
ql server 有没有这个函数不知道了,反正这是一个思路吧。供参考而已,
sql没有这个东西,那我就给你提个思路吧,语句你自己写了,我没有环境。
用ASCII码和sql的ltrim和rtrim来做,你需要循环找到从左起每个字符都是ASCII>=65(9以上即字母)的,直到找到ASCII<=64的就结束,这样可以把这个字符部分的长度得到,在用trim函数截取一下就可以了。
全部回答
- 1楼网友:专属的偏见
- 2021-03-02 16:17
用游标就行了
declare
cursor cc is select sql_text from a; --声明游标
ccrec cc%rowtype; --声明游标变量
begin
open cc;
loop --循环取数
fetch cc into ccrec;
exit when cc%notfound; --取不到数退出
begin
execute immediate 'insert into b(result) '|| ccrec.sql_text; --执行把查询结果插入b表语句
end;
end loop;
close cc;
end;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯