Снежинка sql - функция бокового сплющивания сравнивается с сервером sql - Split_String()

У меня есть задача сравнить количество и посмотреть, > 0

снежинка sql ниже

select 'abc'
from tableA
where 
(SELECT count(T1.value) as val
from tableA,
    lateral flatten(input=>split(abc, ',')) T1
    INNER JOIN (select count(T2.value) as val from 
lateral flatten(input=>split('1,2', ','))) as T2 on T1.val = T2.val) > 0

вот сообщение об ошибке

SQL compilation error: error line 7 at position 29 invalid identifier 'T2.VALUE'

Сравнение серверов Sql, которое работает.

(select Count(T1.value) as [Count] from STRING_SPLIT(abc,',') AS T1
    INNER JOIN STRING_SPLIT('9,10', ',') AS T2 on T1.value = T2.value))>0

Проверьте свои скобки один раз, их расположение может быть неправильным. - "боковое сплющивание (ввод => разделение ('1,2', ','))) как T2"

Pankaj 17.05.2022 19:18
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
2
1
27
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Возможно, вам придется изменить положение следующим образом:

select 'abc'
from tableA
where
(select count(*) from
(SELECT count(flat_tab_alias1.value) as val
from tableA,
lateral flatten(input=>split(abc, ',')) flat_tab_alias1
) as T1
INNER JOIN
(
select count(flat_tab_alias2.value) as val from
lateral flatten(input=>split('1,2', ',')) flat_tab_alias2
) as T2
on T1.val = T2.val) > 0;
«Азбука»
0 Row(s) produced.

Со следующей исходной таблицей -

select * from tablea;
азбука
а, б, в, г, д, е, г

Я получил сообщение об ошибке «Ошибка компиляции SQL: строка ошибки 12 в позиции 11 недопустимый идентификатор« T1.VAL »»

user1810575 17.05.2022 20:34

Я отредактировал запрос.

Pankaj 17.05.2022 21:57

Спасибо Панкай. Мне все еще нужно немного поработать, чтобы поместить это в предложение where, надеюсь, это даст мне некоторое представление.

user1810575 17.05.2022 22:15

У вашего SQL много проблем, но, учитывая, что у нас есть работающий T-SQL, давайте расшифруем это.

(select Count(T1.value) as [Count] from STRING_SPLIT(abc,',') AS T1
    INNER JOIN STRING_SPLIT('9,10', ',') AS T2 on T1.value = T2.value))>0

Этот код разбивает массив строк и объединяет его с набором «известных» значений, подсчитывает, насколько средние значения равны, и просто спрашивает, есть ли какие-либо совпадения.

ARRAY_OVERLAP ответьте на это и используйте SPLIT для создания массивов:

SELECT abc, 
    split(abc, ',') as a1,
    split('1,2', ',') as a2,
    ARRAYS_OVERLAP( a1, a2)
FROM values
    ('1'),
    ('0,4'),
    ('0,1,5')
    t(abc);

дает:

азбукаА1А2ARRAYS_OVERLAP (A1, A2)
1["1"]["1", "2"]ПРАВДА
0,4["0", "4"]["1", "2"]ЛОЖНЫЙ
0,1,5["0", "1", "5"]["1", "2"]ПРАВДА

Итак, ваш SQL должен быть:

SELECT 'abc', abc
FROM tableA
WHERE ARRAYS_OVERLAP( split(abc,','), split('1,2',','));

который с фиктивными данными:

    select * from values
    ('1'),
    ('0,4'),
    ('0,1,5')

дает:

«Азбука»азбука
азбука1
азбука0,1,5

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