2014年11月25日火曜日

WHEREステートメントのLIKE演算子でエスケープ文字を設定する。



まずWHEREステートメントのLIKE演算子について、

データステップ100万回「whereステートメントでのみ使用できる演算子_contains,between,like
で分かり易い説明があるのでご覧ください。



そして、今回紹介するエスケープ文字の設定について。

Sample data
data DT1;
   VAR = '100%'; output;
   VAR = '100'; output;
run;

VAR
  100% 
  100


例えば上のデータから、末尾に「%」という文字が含まれるやつを抽出したい場合、

data DT2;
   set DT1;
   where VAR like '%#%' escape '#';
run;

VAR
  100% 

というように書けます。

escape '#'」で、「#」という文字をエスケープ文字として設定し、
この「#」の次に書かれた「%」をワイルドカードではなく、単なる文字としての「%」に変えています。


エスケープ文字は、「$」とか「\」とか自分で適当に設定できます。

ちなみに、
本題とそれるけど例えば「where VAR like "%abc"」みたいに、検索文字列をダブルクォーテーションで囲むと、検索文字列中の「%abc」がマクロとして解釈されてしまう。
マクロとして解釈されたくない場合は、検索文字列をシングルクォーテーションで囲むこと。



0 件のコメント:

コメントを投稿