gpt4 book ai didi

sql - 如何使用PROC SQL查找数值变量的长度

转载 作者:行者123 更新时间:2023-12-04 18:31:48 37 4
gpt4 key购买 nike

我有一个包含电话号码列的数据集。我想使用 PROC SQL 过滤此数据集 WHERE数字的长度是 至少 7 位数字。

在普通的 SQL 中,我可以只在一个数字周围应用一个长度函数并且它可以工作,但是在 SAS 中它不会让我将它应用于数字列。

我的第一直觉是将列转换为字符,然后找到它的长度,但是当我使用 put 时,我似乎只能说明大小。功能。
但是我什至不知道我的数字的最大大小,因为我无法计算长度!

如何使用 PROC SQL 在 SAS 中找到数值的长度?

最佳答案

由于您还没有发布示例数据集,所以我为自己创建了一个

创建示例数据集。将 phonenum 作为 numeric 与您的情况相同。

data test;
infile datalines;
input phonenum : 8.;
datalines;
123
1234
12345
123456
1234567
12345678
123456789
12345678910
;
run;

您是正确的方法,如果您想计算位数,则必须将其转换为 char ,执行以下步骤:
  • numeric phonenum 转换为 char 。虽然很明显数字的位数不会大于 32,但如果您愿意,仍然可以增加计数。
  • 使用 compress 函数对空白字符进行 strip
  • 使用length函数计算位数
  • proc sql\SAS 中,您不能像这样在 where 语句中使用新创建的变量,但是 proc sql 允许您在此类变量之前使用 calculated 关键字来这样做。

  • proc sql;
    select length(compress(put(phonenum,32.))) as phonelen from test where calculated phonelen > 6;
    quit;

    此外,您可以使用 datasteps(SAS) 实现相同的效果,如下所示:
    data _null_;
    set test;
    phonelen=length(compress(input(phonenum,$32.)));
    if phonelen > 6;
    put phonelen=;
    run;

    关于sql - 如何使用PROC SQL查找数值变量的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28864703/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com