【问题标题】:Proc SQL with space in the column name列名中带有空格的 Proc SQL
【发布时间】:2016-10-29 04:26:15
【问题描述】:

如何在 SAS 中的 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;

错误:在贡献中未找到以下列 表:test_lin。

sashelp.vtable

变量名:libname

变量标签:Library Name

【问题讨论】:

  • 试试where libname = test_linlibname 不需要 SAS 名称文字。 'Libname'n 使其区分大小写。
  • 看起来test_lin 是一个变量。你把它放在这里就像只是另一个列名。
  • 是的,其中 libname = 'TEST_LIN' 有效!

标签: sql sas 4gl


【解决方案1】:

尝试使用``标记... 或者尝试使用方括号 []... 所以它会像 library name 或 [图书馆名称];

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

【讨论】:

  • 它不起作用。两者 - 错误 22-322:语法错误,需要以下之一:名称、带引号的字符串、数字常量、日期时间常量、缺失值、(、+、-、BTRIM、CALCULATED、CASE、EXISTS、INPUT , NOT, PUT, SUBSTRING, TRANSLATE, USER, ^, ~.
  • 这是 MySQL 特有的。
【解决方案2】:

您需要设置DQUOTE=ANSI(默认为DQUOTE=SAS),然后您就可以在名称中使用引号:"library name"

您可以在此处找到详细信息:http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a002473669.htm

【讨论】:

    【解决方案3】:

    根据documentation - SAS Name Literals

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

    SAS 名称文字 是表示为字符串的名称标记 在引号内,后跟大写或小写字母 n。 ...您只能将名称文字用于变量、语句标签以及DBMS 列名和表名

    【讨论】:

    • 嗯,sashelp.vtable 中有这些列吗?错误本身表明 SAS 现在正在查找列 library name
    • @PNPTestovir:刚刚在我的环境(sas9.3,sas base)中检查了 sashelp.vtable,只有libname 作为列名,但没有library name,您确定该列存在于您环境?如果是,那么也许这可能是另一个问题......
    • 请观察案例试试看:'Library Name'n.
    • @pnptestovir:我猜库名称只是标签名称,而不是变量名称,请尝试使用 libname。或者在 vtable 上做一个 proc 内容来验证。编辑:用 proc 内容检查它,库名只是标签,要访问它,你必须使用变量名,即 libname
    • 尝试describe view sashelp.vtable 查看实际的列名。 “库名称”可以是实际 libname 列的显示别名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多