如何在SAS EG的PROC SQL中编写多条件判断生成手机号标记列
在PROC SQL中生成手机号有效性标记列
可以用PROC SQL的CASE WHEN语句结合SAS字符函数实现需求,代码示例如下:
PROC SQL; CREATE TABLE your_output_table AS SELECT phone, CASE WHEN NOT MISSING(phone) AND LENGTHN(phone) = 11 AND VERIFY(phone, '0123456789') = 0 AND phone NE '11111111111' THEN 'Y' ELSE 'N' END AS valid_phone_flag FROM your_input_table; QUIT;
条件说明:
NOT MISSING(phone):判断手机号列不为空(同时排除空字符串和系统缺失值)LENGTHN(phone) = 11:确保手机号实际长度为11位(LENGTHN会忽略末尾空格,比LENGTH更精准)VERIFY(phone, '0123456789') = 0:验证手机号仅包含数字字符,VERIFY返回第一个不在指定字符集中的位置,返回0则表示所有字符都是数字phone NE '11111111111':排除特定的无效测试手机号
注意事项:
- 替换代码中的
your_input_table和your_output_table为你实际使用的表名 - 如果手机号列存在前导/后导空格,可先用
TRIM(LEFT(phone))处理后再判断,比如将条件中的phone替换为TRIM(LEFT(phone))
内容的提问来源于stack exchange,提问作者sas_user4099
相关产品推荐
相关产品推荐

