Значение столбца Redshift LIKE с% в предложении WHERE

Я пытаюсь заставить это работать:

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 запись [Fetch MetaData: 0ms] [Fetch Data: 0ms]

но мне нужно использовать:

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

x    
---- 

0 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 0ms] 

Любые идеи?

Я даже сюда этот вопрос поставил Значение столбца Redshift LIKE с% откуда взялась идея.

Спасибо

Пожалуйста, поделитесь входными данными и ожидаемым результатом. Почему вы хотите использовать второй синтаксис?

Swapnil 27.10.2018 18:58

взгляните на функцию strpos, чтобы узнать, находится ли a в пределах b

Jon Scott 27.10.2018 20:04

@Swapnil, ожидаемый результат находится в первом блоке, x = 10

gafeta 27.10.2018 20:14

Не редактируйте вопрос на аннулировать существующие ответы. Вы всегда можете опубликовать ответ, если он отличается от текущего ответа.

user3956566 30.11.2018 08:17
В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
1
4
915
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать функцию strpos, чтобы узнать, находится ли a в пределах b

см. https://docs.aws.amazon.com/redshift/latest/dg/r_STRPOS.html

where strpos(b,a) > 0

Когда я использую strpos () таким образом, Select strpos ('10 ',' 1 ')> 0 затем работает, другими словами, это «ИСТИНА», но этого не происходит в приведенном ниже коде. с a as (выберите '1' :: varchar (32) as x), b as (выберите '10' :: varchar (32) as x) выберите * from b left join a using (x), где strpos (bx, ах)> 0; Что мне не хватает?

gafeta 27.10.2018 20:24

@gafeta В вашем примере a.x = b.x (из-за using(x)), поэтому ответом всегда будет ноль. Я предлагаю вам отредактировать свой вопрос, чтобы показать образец входной таблицы, а затем образец результата, который вы хотите, и тогда мы сможем вам лучше помочь.

John Rotenstein 28.10.2018 00:30

@John Rotenstein, вы совершенно правы. Спасибо за вклад, я думаю, что сейчас у меня есть не одно, а два решения для этого.

gafeta 29.11.2018 13:16

Другие вопросы по теме