gpt4 book ai didi

sql - 用下划线替换破折号和空格,并使列名大写

转载 作者:行者123 更新时间:2023-12-02 07:20:52 25 4
gpt4 key购买 nike

sas eg 中,出于兼容性问题,我需要复制一个表,重命名其列以避免空格和破折号,并将名称设为大写。

这是我表格中的示例名称,实际上我还有更多:

  • 'Call - Investments IN'
  • 'E-mail - Campaign'
  • 'E-mail - Investments OUT'
  • 'Letter - Campaign'

我想去掉破折号和空格并使名称大写,这些将是我输出的列:

  • 'CALL_INVESTMENTS_IN'
  • 'E_MAIL_CAMPAIGN'
  • 'E_MAIL_INVESTMENTS_OUT'
  • 'LETTER_CAMPAIGN'

编辑:

明确地说,我的输入是一个表,我的输出应该是新表,我不想键入或复制粘贴单个列名,我希望对所有列名进行操作(我可能不得不在从外部来源收到的许多表的许多列上使用它)。

我应该使用什么 sql 查询(或 sas 宏)?

最佳答案

只需使用 RENAME 语句或 RENAME= 数据集选项。如果列表不太长,您可以轻松地将所需的 old=new 对生成到宏变量中。为确保您可以更改大小写,最好使用数据集选项,因为之前只有一个问题表明 RENAME upper=UPPER 在 DATA 步骤中不执行任何操作,因为 SAS 根据名称的首次显示方式设置名称的大小写。

proc contents data=have noprint out=contents ; run;
proc sql noprint;
select catx('=',nliteral(name),upcase(translate(trim(name),'__','- ')))
into :rename separated by ' '
from contents
;
quit;
data want ;
set have (rename=(&rename)) ;
run;

关于sql - 用下划线替换破折号和空格,并使列名大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46465350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com