如何在Snowflake中查找以某个字母开头的特定行

问题描述 投票:0回答:2

我的输入表:

客户 记录
0001 YNNNYNYNNNNN
0002 NNNNNNNNNNNN
0003 YYNNYNYNYYNN
0004 尼尼尼尼尼尼尼

查找所有以字母 Y 开头的记录的行的目标为:

客户 记录
0001 YNNNYNYNNNNN
0003 YYNNYNYNYYNN
sql sas
2个回答
0
投票

使用 %like 的一种解决方案是

SELECT *
 FROM TABLE 
WHERE Records LIKE 'Y_ _ _ _ _ _ _ _ _ _ _ _';

此解决方案仅在我知道所有记录具有相同长度时才有效。


0
投票

我看到它有一个 SAS 标签,所以这里有一些 SAS 解决方案。

proc sql;
    create table want as
        select *
        from snow.have
        where records LIKE 'Y%'
    ;
quit;

数据步骤也将起作用:

data want;
    set snow.have;
    where records =: 'Y';
run;

或者:

data want;
    set snow.have;
    where substr(records, 1, 1) = 'Y';
run;

只需检查您的函数是否兼容,否则 SAS 会在运行代码之前将数据库中的所有内容拖到 SAS 服务器上。 这里是 Snowflake 中支持的 SAS 函数列表

要确认它没有执行此操作,请使用以下 sastrace 选项

options sastrace=',,,d' sastraceloc=saslog;

如果您在 SAS 日志中看到以下注释,则该功能不兼容。它将把它能传递的内容传递给数据库,然后完成剩下的事情。

ACCESS ENGINE: SQL statement was not passed to the DBMS, SAS will do the processing.

为了完全避免这种情况,您还可以使用 SQL 传递工具直接在 Snowflake 中运行 SQL。

© www.soinside.com 2019 - 2024. All rights reserved.