【问题标题】:sas proc sql escape ' (apostrophe)sas proc sql escape '(撇号)
【发布时间】:2018-07-10 07:26:15
【问题描述】:

在使用proc sql时可以在标签中加撇号吗?

proc sql;
    create table palim
    as select palim label='palim's palim'
    from palim;
quit;

这不起作用,因为 sas 认为撇号是标签的结尾。

我无法让它与 escape sas community question 一起工作

这个问题是专门针对proc sql的,因为在这里使用双引号不起作用。

【问题讨论】:

  • @craigcaulfield 这在某种程度上是重复的,但是您发布的问题的公认答案在这里不起作用。第二个答案会奏效。你想让我删除它吗?
  • 没有。似乎有不止一种方法可以处理标签中的撇号。

标签: sql sas


【解决方案1】:

要么切换到使用双引号字符" 来引用您的字符串文字,以便外部使用的字符不包含在字符串中。

label="palim's palim"

或者将任何与外部使用的字符匹配的嵌入引号字符加倍。

label='palim''s palim'

您可以使用单引号或双引号字符来引用 SAS 中的字符串文字。它们在PROC SQL 中不起作用的唯一原因是您将dquote=ansi 选项添加到proc sql 语句。然后双引号内的值被解释为名称而不是字符串文字。

【讨论】:

    【解决方案2】:

    使用% 转义单引号。

    proc sql;
        create table palim
        as select palim label='palim%'s palim'
        from palim;
    quit;
    

    也可以使用双单引号。

    proc sql;
        create table palim
        as select palim label='palim''s palim'
        from palim;
    quit;
    

    escape 子句适用于LIKE 表达式。

    【讨论】:

    • 谢谢你,double '' 有意义并且确实有效
    • 你也可以像lable="palim's palim"这样双引号。请注意,宏将处理双引号内的 % 和 &。
    • % 无法转义单引号。 label='palim%'s palim' 将创建一个无与伦比的报价问题。在宏语言中,当与%STR() 引用函数一起使用时,% 可用于屏蔽单引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多