—欲买桂花终买酒,终不似,少年游。
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。截断和后续扩展都会复制存储小于完整长度的数目后加以读取的效果。
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);
data test_data;
dvterm_="將字串截斷為指定的長度 (位元組單位),而不會中斷多位元組字元。KTRUNCATE 函數會將完整長度的 number
(儲存為 double) 將字串截斷為指定的長度 (位元組單位),而不會中斷多位元組字元。KTRUNCATE 函數會將完整長度的 number
(儲存為 double)截斷為較小的位元組數 (如 length 中所指定),並將截斷的位元組補上 0。
截斷和後續擴充都會複製儲存小於完整長度的數目後加以讀取的效果。";
run;
刀刀将上述的重复过程写成宏程序,分享给大家
%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);
尊敬的读者,首先感谢您对本篇文章的关注和阅读。在此,本小编想要说明的是,以上所述内容都是经过笔者认真整理和撰写的,但限于个人能力和知识水平等因素,难免存在疏漏或错误之处。如有不当之处,敬请包涵并指正,本小编将虚心接受您的批评与建议,并严谨修正文章。再次感谢您对本篇文章的支持与厚爱。
以上就是今天的内容了,喜欢的话麻烦点个关注,非常感谢!!!