数式の入力文字列をゼロに置き換えようとしています。私は特定の文字列のためにそれを行うことができましたが、以下の#mathtempテーブルにリストされているすべての文字列に対して実行できませんでした。SQL内の指定された文字列のアルファベットをゼロに置換する
私は入力の名前を持っています。私は数式を持っていますし、数字(値)を持たない文字列を0に戻すだけです。私が把握することができないreplace文には何らかの間違いがあります。
ISNUMERICを使用してこの処理を試みましたが、必要な出力が得られませんでした。これを行う、または以下を解決するための新しい考えがあるかどうかを教えてください。
BEGIN
DECLARE @INPUTCOUNT AS INTEGER
DECLARE @formulacount as integer
DECLARE @in as int
DECLARE @ia as int
DECLARE @OUTPUTFORMULATrade as nvarchar(160)
set @ia = 1
set @in = 1
CREATE TABLE #STATICFILTER
(
IDNUM INTEGER IDENTITY(1,1),
STATICNAME Varchar(160),
)
INSERT INTO #STATICFILTER (STATICNAME)
VALUES ('Import - Consumption customs value(2266)') ,('Import - Consumption customs value(1540)') ,('Import - Consumption customs value(1541)')
SET @INPUTCOUNT = (select count(*) from #STATICFILTER)
CREATE TABLE #MathTemp1
(
IDNUM INTEGER IDENTITY(1,1),
YEARMONTH VARCHAR(256),
OUTPUTFORMULA VARCHAR(256),
Timedimensiondate Date
)
INSERT INTO #MathTemp1 (YEARMONTH,OUTPUTFORMULA,Timedimensiondate)
VALUES ('CV(N2) 1989: 1','2641.000 + Import - Consumption customs value(1540) + Import - Consumption customs value(1541)','1989-01-01')
,('CV(N2) 1989: 10','54407.000 + Import - Consumption customs value(1540) + 63906.000','1989-10-01')
,('CV(N2) 1990: 11','Import - Consumption customs value(2266) + Import - Consumption customs value(1540) + 53088.000','1990-11-01')
,('CV(N2) 1994: 5','32852.000 + Import - Consumption customs value(1540) + Import - Consumption customs value(1541)','1994-05-01')
SET @formulacount = (select count(*) from #MathTemp1)
while (@ia < @formulacount)
begin
WHILE (@in < @INPUTCOUNT)
BEGIN
SET @OUTPUTFORMULATrade = (Select Replace ((SELECT REPLACE(OUTPUTFORMULA,(select STATICNAME from #STATICFILTER where IDNUM = @in),0)FROM #MathTemp1 WHERE IDNUM = @ia),(select STATICNAME from #STATICFILTER where IDNUM = @in+1),0))
SET @in = @in + 1
END
SET @ia = @ia + 1
SET @in =1
Select @OUTPUTFORMULATrade AS New
END
drop table #MathTemp1
drop table #STATICFILTER
END
ますのでご注意ください入力は#staticfilterテーブルにランダムな形式で配置されており、同様に#mathtempテーブルは、入力式のいずれかの組み合わせを持っているかもしれません。
私の希望する出力は、任意の数式の文字列をゼロに置き換えることです。
2641.000 + 0 + 0
54407.000 + 0 + 63906.000
0 + 0 + 53088.000
正規表現を試しましたか? – dcod
サンプルデータの出力はどのようなものですか?ネストされたwhileループアプローチは、これを処理する良い方法のようには見えません。 –
@dcod正規表現とSQLサーバは、CLR以外では一度も関連付けられていません。 –