2016-06-27 6 views
0

SASのPROC SQLの名前( 'library name')にスペースを含むカラムはどのように使用できますか?Proc SQLのカラム名に空白がある

proc sql outobs=10; 
    select * 
    from sashelp.vtable 
    where library name = xxx 
    ; 
run; 

は、私が試した:

proc sql outobs=10; 
    select * 
    from sashelp.vtable 
    where 'Libname'n = test_lin; 
quit; 

proc sql outobs=10; 
    select * 
    from sashelp.vtable 
    where 'library name'n = test_lin; 
quit; 

proc sql outobs=10; 
    select * 
    from sashelp.vtable 
    where libname = test_lin; 
quit; 

ERROR: The following columns were not found in the contributing tables: test_lin.

sashelp.vtable

変数名:libnameを

変数レーベル:ライブラリ名

+2

'libname = test_lin'を試してください:' libname'にSAS名前リテラルは必要ありません。 '' Libname'n'は大文字と小文字を区別します。 –

+1

'test_lin'は変数です。別の列名と同じようにここに入れます。 –

+0

はい、libname = 'TEST_LIN'が動作します! – PNPTestovir

答えて

5

によると、 documentation - SAS Name Literalsは:

proc sql outobs=10; 
    select * 
    from sashelp.vtable 
    where 'library name'n = xxx 
    ; 
run; 

A SAS name literal is a name token that is expressed as a string within quotation marks, followed by the upper- or lowercase letter n. ... You can use a name literal only for variables, statement labels, and DBMS column and table names.

+0

私はエラーが発生します:貢献するテーブルには、次の列が見つかりませんでした:BF_REF、ライブラリ名。 – PNPTestovir

+1

さて、これらの列は 'sashelp.vtable'にありますか?エラー自体は、SASが列 'ライブラリ名 'を探していることを示しています。 –

+1

@PNPTestovir:自分の環境(sas9.3、sasベース)でsashelp.vtableをチェックしただけで、カラム名として 'libname'しか得られませんでしたが、' library name'ではなく、もしそうなら、多分これは別の質問かもしれません... – kl78

0

は ``マークを使用しようと するか、それがlibrary nameまたは[ライブラリ名]のようになりますブラケット[] ... を使用するようにしてください。

select * 
from sashelp.vtable 
where `library name` = xxx or [library name] = xxx; 
+0

動作しません。両方 - ERROR 22-322:構文エラー。名前、引用符で囲まれた文字列、数値定数、日時定数、欠損値、(BTRIM、CTRACULATED、 CASE、EXISTS 、入力、NOT、PUT、SUBSTRING、TRANSLATE、USER、^、〜。 – PNPTestovir

+0

これはMySQL固有のものです。 – TylerH

関連する問題