求给个PL/SQL的Function,详细内容见下.....谢谢

给出下面的表1.根据模型ID串获得英文计算公式2.解析英文计算公式里面[]内的数字,并组串如:382,383,382谢谢!!!急求啊...... 给出下面的表

1.根据模型ID串获得英文计算公式
2.解析英文计算公式里面 [ ] 内的数字,并组串
如:382,383,382

谢谢!!!急求啊...
展开
 我来答
百度网友9b9910e
2013-02-22 · TA获得超过397个赞
知道小有建树答主
回答量:721
采纳率:0%
帮助的人:449万
展开全部
1.第一个 SQL Function.
CREATE FUNCTION [dbo].[Get_Formular]
(
@Mod_ID int
)
RETURNS nvarchar(max)
AS
BEGIN
DECLARE @BackFormula nvarchar(max)
Select @BackFormula = ''
Declare ItemCursor cursor Local--声明一个游标,查询满足条件的数据
For Select [英文计算公式]
From mx_sczbgl
Where [模型ID] = @Mod_ID
Open ItemCursor--打开游标
Fetch Next From ItemCursor into @BackFormula
RETURN @BackFormula
END

2.第二个,没明白你啥意思。
追问
第二条才是最关键的
得到英文计算公式后,截取字符串,如:
计算公式 N_Field1*[391]-[392]*N_Field2
截取中括号里面的数值,得到结果391,392(中间逗号隔开)而不是391392

而且第一个第二个要合并成一个Function来表达
追答
哦,这样。
这就是第二个。
Declare @TestStr nvarchar(max)
Declare @StaPo int
Declare @FindStaPo int
Declare @FindEndPo int
Declare @ItemStr nvarchar(max)
Declare @ResultStr nvarchar(max)
Set @TestStr = 'N_Field1*[391]-[392]*N_Field2'
Set @StaPo = 1
Set @FindStaPo = 0
Set @FindStaPo = charindex('[',@TestStr,@StaPo)
Set @ResultStr = ''--重要,必须赋初值
While @FindStaPo > 0
Begin
Set @FindEndPo = charindex(']',@TestStr,@StaPo)
Set @ItemStr = SUBSTRING(@TestStr,@FindStaPo + 1,@FindEndPo - @FindStaPo - 1)
Print(@ItemStr)
Set @ResultStr = @ResultStr + @ItemStr + ','
Set @StaPo = @FindEndPo + 1
Set @FindStaPo = charindex('[',@TestStr,@StaPo)
end
Set @ResultStr = LEFT(@ResultStr,LEN(@ResultStr)-1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式