我正在嘗試使用 REGEX_SUBSTR 和通配符加入 Snowflake 中的兩個表,但沒有運氣。這是我所擁有的:
SELECT P.NAME,
ACL.CONTENT_NAME,
REGEXP_SUBSTR(CONTENT_NAME, '/([^/] (\\.pdf))$', 1, 1, 'e', 1) AS PDFS
FROM ACTIVITY_DOWNLOAD AD
JOIN PROGRAM P
ON P.NAME LIKE '%' || REGEXP_SUBSTR(CONTENT_NAME, '/([^/] (\\.pdf))$', 1, 1, 'e', 1) || '%'
運行查詢不會回傳任何東西——關于問題是什么的任何想法?
uj5u.com熱心網友回復:
使用一些 CTE 來獲取虛假資料:
WITH ACTIVITY_DOWNLOAD(CONTENT_NAME) as (
select * from values
('http://www.example.com/string1/string2.pdf'),
('http://www.example.com/string1/string3.gif')
), PROGRAM(name) as (
select * from values
('string2.pdf')
)
和 SQL
SELECT P.NAME,
ACL.CONTENT_NAME,
REGEXP_SUBSTR(CONTENT_NAME, '/([^/] (\\.pdf))$', 1, 1, 'e', 1) AS PDFS
FROM ACTIVITY_DOWNLOAD ACL
JOIN PROGRAM P
ON P.NAME LIKE '%' || REGEXP_SUBSTR(ACL.CONTENT_NAME, '/([^/] (\\.pdf))$', 1, 1, 'e', 1) || '%'
給出:
| 姓名 | CONTENT_NAME | PDFS |
|---|---|---|
| 字串2.pdf | http://www.example.com/string1/string2.pdf | 字串2.pdf |
這與我的預期一致。
根據您的表有多大ACTIVITY_DOWNLOAD,您可能會發現 CTE/子選擇提供更好的性能。
SELECT P.NAME,
f.CONTENT_NAME,
f.file_name AS PDFS
FROM (
select distinct
CONTENT_NAME,
REGEXP_SUBSTR(ACL.CONTENT_NAME, '/([^/] (\\.pdf))$', 1, 1, 'e', 1) as file_name,
'%' || file_name || '%' as like_filter
from ACTIVITY_DOWNLOAD as acl
)f
JOIN PROGRAM P
ON P.NAME LIKE f.like_filter
或者
WITH clean_content_names as (
select distinct
CONTENT_NAME,
REGEXP_SUBSTR(ACL.CONTENT_NAME, '/([^/] (\\.pdf))$', 1, 1, 'e', 1) as file_name,
'%' || file_name || '%' as like_filter
from ACTIVITY_DOWNLOAD as acl
)
SELECT P.NAME,
f.CONTENT_NAME,
f.file_name AS PDFS
FROM clean_content_names f
JOIN PROGRAM P
ON P.NAME LIKE f.like_filter
WITH ACTIVITY_DOWNLOAD(CONTENT_NAME) as (
select * from values
('http://www.example.com/string1/string2.pdf'),
('http://www.example.com/string1/string3.gif')
), PROGRAM(name) as (
select * from values
('string2.pdf')
)
SELECT P.NAME,
f.CONTENT_NAME,
f.file_name AS PDFS
FROM (
select distinct
CONTENT_NAME,
REGEXP_SUBSTR(ACL.CONTENT_NAME, '/([^/] (\\.pdf))$', 1, 1, 'e', 1) as file_name,
'%' || file_name || '%' as like_filter
from ACTIVITY_DOWNLOAD as acl
)f
JOIN PROGRAM P
ON P.NAME LIKE f.like_filter;
| 姓名 | CONTENT_NAME | PDFS |
|---|---|---|
| 字串2.pdf | http://www.example.com/string1/string2.pdf | 字串2.pdf |
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/481385.html
上一篇:如何正則運算式匹配此字串組?
