列名の一部として「=」をエスケープするにはどうすればよいですか?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />列名の一部として「=」をエスケープするにはどうすればよいですか?
「select where」ステートメントを実装する必要があり、複数の列名を含む文字列としてそれを構築しています。 しかし、評価時には、「=」を代入として解釈しようとします。 私の列名は「COND=TEMP」のようなものです。
私が使用するスクリプトのセクションの下:
選択文字列= ":テスト名 == 比較するベンチ名" ;
//マップテーブルの各列について、列名が COND の場合は選択基準に追加します
のために( j = 1 、 j <=列数、 j ++、
現在のデータテーブル(相関マップテーブル) ;
現在の列名=相関マップテーブル<<列名の取得() ;
もし(含まれています(現在の列名[ j 】 、 「条件_」 ) > 0 、
値=現在の列名[ j ][私】 ;
列名=現在の列名[ j 】 ;
選択文字列=選択文字列|| " & As Column(correlationMapTable," ||チャー(現在の列名[ j ]) || ") == " ||チャー(現在の列名[ j ][私]) ;
) ;
) ;
選択文字列= "benchDataTable << select where(" ||選択文字列|| ")" ;
評価(解析する(選択文字列)) ; //ここでは、列名の一部に「=」がある場合に文句を言います。
ベンチデータテーブル<<サブセット((選択された行) 、出力テーブル名( 「フィルターベンチテーブル」 )) ;
前もって感謝します!
Re: 列名の一部として「=」をエスケープするにはどうすればよいですか?はい、引用符です。キャッチしてくれてありがとう。
エスケープ文字と JSL のニュアンスについて詳しくは、非常によくまとめられているスクリプト ガイドを参照してください。ヘルプ >> 書籍 >> スクリプト ガイド。(エスケープ文字については87ページにあります)。構文について知りたいだけの場合は、Scripting Index の方が役立ちます。ヘルプ>>スクリプトインデックス。
いくつか指摘しておきたい点があり、
If() ステートメント内の数値の場合、JSL は 0 以外のものに真実に応答します。もし(含まれています(現在の列名[ j 】 、 「条件_」 ) > 0、と同じですもし(含まれています(現在の列名[ j 】 、 「条件_」 ) 、
これ:
//マップ テーブルの各列について、列名が COND の場合は選択基準に追加します。
のために( j = 1 、 j <=列数、 j ++、
現在のデータテーブル(相関マップテーブル) ;
現在の列名=相関マップテーブル<<列名の取得() ;
もし(含まれています(現在の列名[ j 】 、 「条件_」 ) > 0 、
値=現在の列名[ j ][私】 ;
列名=現在の列名[ j 】 ;
こう書いた方が良いでしょう:
//マップ テーブルの各列について、列名が COND の場合は選択基準に追加します。
のために( j = 1 、 j <=列数、 j ++、
列名 = 列(相関マップテーブル、j) <<名前の取得;
もし(含まれています(列名、 「条件_」 ) 、
Re: 列名の一部として「=」をエスケープするにはどうすればよいですか?やあ、ブレイノソ、
そうですね、私は JSL のエスケープ文字の起源を知るほど長くはありませんが、確かに「\!」で始まります。文字列に改行を挿入するには、「\!n」を使用します。引用符が JMP によって文字列の終わりとして認識されないようにするには、引用符を \! にします。(そして msharp は、「エスケープする必要があるのは、引用符")。
そして、確かに、他の言語から JSL に来ると少し不快になるかもしれません ;-)。
HTH、
エリック
Re: 列名の一部として「=」をエスケープするにはどうすればよいですか?こんにちは、msharp さん。
ご回答いただきありがとうございます。 それで、必要なエスケープ シーケンスが \! であることを明確にしていただけますか。 <ここに列名が入ります> \! ?
C# プログラマとして、JSL を学ぶだけで頭がとても痛くなります 
よろしくお願いします。
B
Re: 列名の一部として「=」をエスケープするにはどうすればよいですか?正直に言うと、このスクリプトには多くの問題があります。デバッグのことを考えるだけで頭が痛くなります。
だから私はそうするつもりはありませんが、本質的にあなたの問題はこれです:
= エスケープする必要はありません、エスケープする必要があるのは括弧引用符。別名:
評価(解析する( "dt << Select Where(Column("条件=温度") == 2)" )) ;
になる必要があります:
評価(解析する( "dt << Select Where(Column(\!"Cond=Temp\!") == 2)" )) ;