String WHERE子句中带%的类红移列值

String WHERE子句中带%的类红移列值,string,amazon-redshift,sql-like,String,Amazon Redshift,Sql Like,我正努力让这一切顺利进行: with a as (select '1'::varchar(32) as x), b as (select '10'::varchar(32) as x) select * from b left join a using(x) where b.x like '%1%' ; x ---- 10 选择1条记录[获取元数据:0ms][获取数据:0ms] 但我需要使用的是: where b.x like '%' || a.x || '%'

我正努力让这一切顺利进行:

with a as (select '1'::varchar(32) as x), 
     b as (select '10'::varchar(32) as x)
select *
from b 
left join a using(x)
where b.x like '%1%'
;

x    
---- 
10   
选择1条记录[获取元数据:0ms][获取数据:0ms]

但我需要使用的是:

where b.x like '%' || a.x || '%'
;

x    
---- 

0 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 0ms] 
有什么想法吗

我已经在这里提出了这个问题 这个想法来自哪里


谢谢

您可以使用strpos函数查看a是否在b中


请共享输入数据和预期输出。为什么要使用第二种语法?请查看strpos函数以查看a是否在b@Swapnil,预期输出在第一个块中,x=10请勿编辑问题。如果答案与当前答案不同,您可以随时发布答案。当我以这种方式使用strpos时,选择strpos'10','1'>0即可工作,换句话说,它是'TRUE',但在下面的代码中没有。使用a作为选择“1”::varchar32作为x,b作为选择“10”::varchar32作为x选择*从b左侧使用x加入a,其中strpsb.x,a.x>0;我遗漏了什么?@gafeta在你的例子中,由于usingx,a.x=b.x,因此答案总是零。我建议您编辑您的问题,以显示一个示例输入表,然后显示您想要的输出示例,这样我们可以更好地帮助您。@John Rotenstein您完全正确。谢谢你的投入,我想我现在已经不是一个而是两个解决方案了。
where strpos(b,a) > 0