【问题标题】:Length and concat in PROC SQL SASPROC SQL SAS 中的长度和连接
【发布时间】:2018-08-26 06:04:28
【问题描述】:

我想为 select 语句中的某些特定列定义长度,并且我想连接两列,即 sponsor idsponsor,如 SAS proc sql 中的“ABC-123”。请帮忙 这是代码

proc sql;
select
    project_id,
    sponsor_id,

    empl_country,
    region,
    empl_dept_descr,
    empl_bu_descr,

    sponsor,
    full_name,
    mnth_name FROM Stage0;
quit;

【问题讨论】:

  • 你尝试了什么? SAS字符串连接运算符和函数你知道吗?

标签: sas proc proc-sql


【解决方案1】:

如果您不知道长度,您可以使用 strip() 函数,该函数将删除前导和尾随空格,在这种情况下,它将删除由 catx() 默认长度生成的空格:

strip(catx('-', 赞助商 ID, 赞助商))

代码:

proc sql;
select
    project_id,
    sponsor_id,

    empl_country,
    region,
    empl_dept_descr,
    empl_bu_descr,

    sponsor,
    full_name,
    mnth_name ,

/* New column */
strip(catx('-', sponsor_id, sponsor)) as new_id

FROM Stage0;
quit;

【讨论】:

  • 虽然这个纯代码的答案可能会解决手头的问题,但需要更多的解释来帮助网站的未来用户了解如何将此解决方案应用于他们的情况。
  • 感谢您的注意,我已经添加了有关所使用功能的更多说明。
  • @momo1644 嘿,我发布了一个问题。如果你有空,任何机会
【解决方案2】:

CATX 函数将连接任意数量的任何类型的参数,剥离值并在每个参数之间放置一个公共分隔符(也被剥离)。例如:

proc sql;
  create table want as
  select 
    catx('-', name, age) as name_age length=20
  , catx(':', name, sex, height) as name_gender_height
  from sashelp.class;

如果分配 CATX 结果的变量没有指定长度,则新变量的长度将为 200 个字符。

剥离意味着删除了前导和尾随空格。缺少值的参数不会成为串联的一部分。

SAS Documentation for CATX

【讨论】:

    猜你喜欢
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多