技术问询:SAS、SQL中移除列值前3字符及生成去OST前缀变量
问题2:提取OST前缀后的内容
如果所有目标变量都以OST开头,那解法和问题1完全一致(截取第4位及以后的内容)。但如果存在非OST开头的变量需要保留原内容,就得加上条件判断:
SAS 实现
data extracted_table; set your_source_table; /* 先判断前3位是否为OST,是则截取后续内容,否则保留原变量 */ if substr(original_col, 1, 3) = 'OST' then extracted_col = substr(original_col, 4); else extracted_col = original_col; run;
要是需要忽略大小写判断,可加上upcase函数:if upcase(substr(original_col,1,3)) = 'OST'
SQL 实现
用CASE语句做条件分支,适配不同数据库:
- MySQL/Oracle:
SELECT original_col, CASE WHEN SUBSTR(original_col, 1, 3) = 'OST' THEN SUBSTR(original_col, 4) ELSE original_col END AS extracted_col FROM your_source_table;
- SQL Server:
SELECT original_col, CASE WHEN SUBSTRING(original_col, 1, 3) = 'OST' THEN SUBSTRING(original_col, 4, LEN(original_col)) ELSE original_col END AS extracted_col FROM your_source_table;
内容的提问来源于stack exchange,提问作者bree
相关产品推荐
相关产品推荐

