前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[SAS]分割200字符,ktruncate递(套)归(娃)来帮忙

[SAS]分割200字符,ktruncate递(套)归(娃)来帮忙

作者头像
归海刀刀
发布2023-09-27 10:49:35
6630
发布2023-09-27 10:49:35
举报
文章被收录于专栏:归海刀刀
200

—欲买桂花终买酒,终不似,少年游。

01

KTRUNCATE 函数的语法可以参见以下链接,https://support.sas.com/documentation/cdl_alternate/zt/nlsref/64811/HTML/default/p0kslx8j9r3bw8n1niwz6h3k1mod.htm

KTRUNCATE 函数 将字符串截断为指定的长度 (字节单位),而不会中断多字节字符。

类别: DBCS

语法: KTRUNCATE(argument, number, length)

必要的参数:

argument 指定任何 SAS 字符表达式。

number 是数值。

length 是整数。

详细资料:

请参阅 SAS 字符串函数的国际化兼容性(https://support.sas.com/documentation/cdl_alternate/zt/nlsref/64811/HTML/default/p1pca7vwjjwucin178l8qddjn0gi.htm),以获取限制以及详细信息。

KTRUNCATE 函数会将完整长度的 number (存储为 double) 截断为较小的字节数 (如 length 中所指定),并将截断的字节补上 0。截断和后续扩展都会复制存储小于完整长度的数目后加以读取的效果。

代码语言:javascript
复制
DVTERM=ktruncate(char,1,200);
DVTERM1=ktruncate(char,length(DVTERM)+1,200);
DVTERM2=ktruncate(char,length(DVTERM)+length(DVTERM1)+1,200);
DVTERM3=ktruncate(char,length(DVTERM)+length(DVTERM1)+length(DVTERM2)+1,200);
代码语言:javascript
复制
data test_data;
dvterm_="將字串截斷為指定的長度 (位元組單位),而不會中斷多位元組字元。KTRUNCATE 函數會將完整長度的 number 
(儲存為 double) 將字串截斷為指定的長度 (位元組單位),而不會中斷多位元組字元。KTRUNCATE 函數會將完整長度的 number 
(儲存為 double)截斷為較小的位元組數 (如 length 中所指定),並將截斷的位元組補上 0。
截斷和後續擴充都會複製儲存小於完整長度的數目後加以讀取的效果。";
run;

刀刀将上述的重复过程写成宏程序,分享给大家

代码语言:javascript
复制
%macro GHDD_split_char(in=,var=,split_len=200,out=,prefix=);
proc sql noprint;
    select ceil(max(length(&var.)-200)/198+1) into:maxn from &in.;
run;
data &out.(drop=temp_len remain_char temp_char);
  set &in.;
  temp_len=0;
  length &prefix. &prefix.1-&prefix.%eval(&maxn.-1) $200.;
  array temp[&maxn.] &prefix. &prefix.1-&prefix.%eval(&maxn.-1);
  nn=1;
  remain_char=&var.;
  do until(length(remain_char)<=&split_len.);
    temp_char=ktruncate(remain_char,1,&split_len.);
    temp[nn]=temp_char;
    nn=nn+1;
    temp_len=temp_len+length(temp_char);
    remain_char=substr(&var.,temp_len+1);
    if length(remain_char)<=&split_len. then temp[nn]=remain_char;
  end;
run;
%mend;
%GHDD_split_char(in=test_data,var=dvterm_,out=want,prefix=DVTERM);

尊敬的读者,首先感谢您对本篇文章的关注和阅读。在此,本小编想要说明的是,以上所述内容都是经过笔者认真整理和撰写的,但限于个人能力和知识水平等因素,难免存在疏漏或错误之处。如有不当之处,敬请包涵并指正,本小编将虚心接受您的批评与建议,并严谨修正文章。再次感谢您对本篇文章的支持与厚爱。

以上就是今天的内容了,喜欢的话麻烦点个关注,非常感谢!!!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-02 21:17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 归海刀刀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档