sql - SAS Proc SQL 字符串截断问题
问题描述
从下面另一个表中的值创建一个简单的表:
create table summary3 as
select
substr(&Start_dt.,1,4) as time_range,
NFDPs ,
NFDPExceeds,
NblkExceeds,
NFDPExceedsLT30s as NFDPExceedsLT30,
NReports as Nbr_report ,
prcnt_FDP_ext ,
prcnt_blk_ext ,
prcnt_extLT30 as prcnt_ext_LT30,
prcnt_report,
monotonic() as id
from OAP_exceedances_by_year;
我的问题出现在我创建的第一列,time_range
. 当我稍后尝试向该表添加值时,我注意到该列被限制为长度为 4 或更短的字符,并且它会自动截断任何更大的值。有没有办法可以更改第一条语句,或者我未来的插入/设置语句以避免截断?IE 我仍然希望第一行只有 4 个字符,但我可能需要未来的行更多。
谢谢!
解决方案
这取决于您如何进行未来的处理。如果您的数据稍后说明
data summary_final;
set summary3;
time_range = "ABCDEF";
run;
然后你可以像这样改变它:
data summary_final;
length time_Range $6;
set summary3;
time_range = "ABCDEF";
run;
但是你当然也可以在最初的拉动中做你所说的。例如...
proc sql;
create table namestr as
select substr(name,1,4) as namestr length=8
from sashelp.class;
quit;
namestr
即使其中包含 substr(1,4) ,也会创建为 length=8 ;那里的名称将按照要求被截断,substr
但未来的名称将被允许为 8 长。
推荐阅读
- ios - 取消控制器动画转换时不正确的preferredStatusBarStyle
- node.js - UnhandledPromiseRejectionWarning:TypeError:_base64Stream2.default.encode 不是函数
- sql - 在用户选择的特定表上运行一个 MS Access SQL 脚本
- html - 如何使高度相对于宽度
- php - 如何在 php preg_replace 中用双引号括起数字?
- r - 根据R中的序列条件按总和聚合
- apache-spark - 如何配置 spark thrift 用户和密码
- sas - 如何将字符年份转换为 SAS 日期 1/1/Year?
- java - JAVA:如何将映射的参数传递为与另一个父映射的 ID 关联的值
- php - PHP 中的 fopen() 无法解析具有长位置 url 的重定向