求给个PL/SQL的Function,详细内容见下.....谢谢
给出下面的表1.根据模型ID串获得英文计算公式2.解析英文计算公式里面[]内的数字,并组串如:382,383,382谢谢!!!急求啊......
给出下面的表
1.根据模型ID串获得英文计算公式
2.解析英文计算公式里面 [ ] 内的数字,并组串
如:382,383,382
谢谢!!!急求啊... 展开
1.根据模型ID串获得英文计算公式
2.解析英文计算公式里面 [ ] 内的数字,并组串
如:382,383,382
谢谢!!!急求啊... 展开
1个回答
展开全部
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.第二个,没明白你啥意思。
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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询