過去の桐井戸端BBS (桐ver.7)
1916 指定文字列の文字置換の方法は 石井 1999/6/2-14:49
指定文字列の上2桁だけを参照し、条件を満たしたら置換する方法がよくわからなくて困っています。
具体的に示すと下記の様になります。

上2桁99を11に文字置換する。
例)995399-01であれば、115399-01に文字置換する。

自分なりに下記のような式を書いたのですが、うまくい
きませんでした。どなたか対処方法を教えて下さい。

#文字置換((#部分列([製造NO],1,2)),"99","11")

また、99*,98*,97*,96*をそれぞれ11,10,09,08に置換するに
はどのようにすればよいでしょうか?御願いします。
1917 Re: tuji 1999/6/2-15:35
記事番号1916へのコメント
手間はかかりますがこんなのどうでしょう。
まず[製造NO]のデータの頭に置換でAを埋め込む
A+[製造NO]
これで995399−01がA995399−01になるので
置換で、
#文字置換([製造NO],"A99","11")とすれば
115399−01になります。
これを繰り返せばできないこともありませんけど・・・。
1918 Re: 宮城 1999/6/2-20:06
記事番号1916へのコメント
石井さんこんにちは。

> #文字置換((#部分列([製造NO],1,2)),"99","11")

(#部分列([製造NO],1,2))の部分は項目名でないといけません。

まず、2項目追加、A・Bにしますが、#部分列で2桁めまでと3桁
め以下に置換しておきます。

それから、Aについて次式で置換。

#条件選択([]="99","11"¥
     ,[]="98","10"¥
     ,[]="97","09"¥
     ,[]="96","08")

で最後に[製造NO]を次式で置換。

[A]+[B]

てなところかな。
1919 Re: su 1999/6/2-21:02
記事番号1916へのコメント
石井さんこんにちは
ちょっと式が長くなりますが、下記のように設定すればご希望通りとなると思います。

#条件選択( #部分列( [製造NO] , 1 ,2 )="99" , #文字置換( #部分列( [製造
NO] , 1 , 2 ) , "99" , "11" )+#部分列( [製造NO] , 3 ),#部分列( [製造
NO] , 1 ,2 )="98" , #文字置換( #部分列( [製造NO] , 1 , 2 ) , "98"
, "10" )+#部分列( [製造NO] , 3 ),#部分列( [製造NO] , 1 ,2 )="97" ,
#文字置換( #部分列( [製造NO] , 1 , 2 ) , "97" , "10" )+#部分列( [製造
NO] , 3 ),#部分列( [製造NO] , 1 ,2 )="96" , #文字置換( #部分列( [製
造NO] , 1 , 2 ) , "96" , "09" )+#部分列( [製造NO] , 3 ),#部分列( [製
造NO] , 1 ,2 )="95" , #文字置換( #部分列( [製造NO] , 1 , 2 ) , "95"
, "08" )+#部分列( [製造NO] , 3 ),1,[製造NO] )

繰り返し部分が多いので、そのあたりをもっとスマートにする方法もあると思いますが、とりあえず置換できます。
1920 ありがとうございました 石井 1999/6/3-00:44
記事番号1919へのコメント
tujiさん、宮城さん、suさんアドバイスありがとうございました。
早速、試してみたところいずれの方法でも無事対処することができました。
1921 Re: Ogo 1999/6/3-00:45
記事番号1916へのコメント
>上2桁99を11に文字置換する。
>例)995399-01であれば、115399-01に文字置換する。

>また、99*,98*,97*,96*をそれぞれ11,10,09,08に置換するに
>はどのようにすればよいでしょうか?御願いします。

以下の計算式で置換します。

#条件選択(#数値(#部分列([製造NO],1,2))>95,
     #文字列(#数値(#部分列([製造NO],1,2))-88,2)
          +#部分列([製造NO],3),
                        1,[製造NO])

考え方としては、上2桁を数値に直して、これが95を超える場合は
88を引いたものを文字列に直して、元の文字列の3桁目からを結合する

#cond(#num(#sstr([],1,2))>95,#str(#num(#sstr([],1,2))-88,2)+#sstr([],3),1,[])

でも一緒です。
1924 Re: 宮城 1999/6/3-09:04
記事番号1921へのコメント
おっと、そのセンではもう一回文字列に直さないと・・・。
名人の腕から水・・・、ですね。人のことを言う資格があるか?
私のページの特設コーナーをご覧下さい。たっぷり「恥」をさらしています。
1932 Re: Ogo 1999/6/3-23:23
記事番号1924へのコメント
>おっと、そのセンではもう一回文字列に直さないと・・・。

ちゃんと直しているんですけど... (^^;
どうぞ、式の方を解析下さい。 (^^;
1934 Re: 宮城 1999/6/4-00:01
記事番号1921へのコメント
失礼いたしました。おっしゃるとおりですね。未熟ものが
また、ばかをやってしまいました。反省。
1937 Re: 宮城 1999/6/5-09:58
記事番号1918へのコメント
ちょいと手抜きをしています。データ検証済の臨時JOBならいいのですが、
常設一括処理であれば・・・。

想定外データをどうするか決めておくべきです。最後に無条件ヒット、

1,"??"でも入れておいてください。ありえないことなどまずなく、??が
でたらあせってロジック見直しということです。ここではヌルになるんでしょうが、
そのたびに落ちてたら世話はありません。

戻る