Nir*_*rko 2 sql snowflake-cloud-data-platform
我想使用 like 子句来搜索一行中的所有列。就像是
SELECT * FROM test WHERE '%something%' IN *
Run Code Online (Sandbox Code Playgroud)
另外,我不知道我拥有的确切列,这就是为什么我需要通配符 (*)
有没有办法用雪花/SQL 做到这一点?
您可以考虑使用 array_construct 和 array_contains:
CREATE or REPLACE TABLE test ( id number, v varchar, z varchar )
as SELECT * FROM VALUES
(1, 'Gokhan', 'Aylin'),
(2, 'Joe', 'Black');
SELECT *, ARRAY_CONSTRUCT( * ) combined
FROM test where ARRAY_CONTAINS( 'Gokhan'::variant, combined );
Run Code Online (Sandbox Code Playgroud)
您还可以将此数组转换为 varchar 以搜索部分匹配的字符串:
SELECT *, ARRAY_CONSTRUCT( * ) combined
FROM test
WHERE combined::VARCHAR LIKE '%Go%';
+----+--------+-------+------------------------+
| ID | V | Z | COMBINED |
+----+--------+-------+------------------------+
| 1 | Gokhan | Aylin | [ 1, "Gokhan", "Aylin" |
+----+--------+-------+------------------------+
Run Code Online (Sandbox Code Playgroud)