4

金融システム データの SAS 構造でデータ モデルを構築しようとしています。アイデアは、テーブルに ID を文字式として保持し、別のテーブルから ID を作成することです。式で始まるものを取得するproc sql必要があります。は次のようになります。INNER JOINLIKEIDs'ID%'proc sql

proc sql;
SELECT I.* 
  FORM tableWithIDs X INNER JOIN tableWithData I 
    ON I.ID LIKE X.ID||'%'
;
quit;

残念ながら、次のようになるはずです: ... LIKE 'X.ID%' Is there a way to build such expression in SAS code?

4

2 に答える 2

4

の値を保存するX.ID||'%'と、おそらく1 %(id = 1の場合)のようになります。次のように、余分な空白を削除するためにcompress周りに置いてみてください。X.ID||'%'

LIKE compress(X.ID || '%')

ID内に空白文字が含まれていないと思います。

于 2013-01-16T08:55:45.133 に答える
4

これに対する SAS ソリューションは、バージョン 9 を使用していると仮定すると、|| の代わりに CATS 関数を使用することです。連結:

like cats(x.ID,'%')

EQT 演算子もあります。これは、本質的に「開始」を意味します (同じ長さに切り捨ててから比較します)。

on I.ID eqt x.ID

これは、x.ID が一貫して I.ID よりも長いか同じ長さである場合にのみ機能します。これは、長い方が切り捨てられるためです。I.ID が 'Member' などの長い文字列で、x.ID が 'Mem' の場合、比較は有効ですが、LIKE は有効とは見なしません。

于 2013-01-16T17:49:40.207 に答える