IzaacSpyro Ответов: 1

Как сравнить 2 поля - SQL


Эй,
Есть два поля с несколькими значениями.
Field A            Field B       Field C      Field D      
Apple,Pear,Banana  Apple, Pear


В файле C я хотел бы иметь пропущенное значение из поля, в поле D-пропущенное значение из поля B.

Что я уже пробовал:

Новичок в sql и хотел бы учиться

OriginalGriff

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

Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Maciej Los

Определите, что такое: "недостающее значение".

F-ES Sitecore

Если это то, как вы храните свои данные, то я бы начал с редизайна и держал ваши данные в таблицах отношений родитель\потомок. Это не только облегчит решение проблемы, которую вы пытаетесь решить, но и избавит вас от всевозможных проблем, с которыми вы гарантированно столкнетесь, когда будете хранить данные таким образом.

1 Ответов

Рейтинг:
2

RickZeeland

Если вы используете SQL Server 2016 или выше, вы можете использовать STRING_SPLIT функция:
STRING_SPLIT (Transact-SQL) - SQL Server | Microsoft Docs[^]

Если вы используете SQL Server 2017 или выше, вы можете использовать STRING_AGG функция для соединения строк: STRING_AGG (Transact-SQL) - SQL Server | Microsoft Docs[^]

Приведенный ниже запрос находит недостающее значение в поле b 'Banana'

CREATE table test (a varchar(20), b varchar(20), c varchar(20), d varchar(20));
INSERT INTO test (a,b,c,d) VALUES ('Apple,Pear,Banana', 'Apple,Pear', '', '');

SELECT value FROM test
CROSS APPLY STRING_SPLIT(a, ',')
WHERE value NOT IN (SELECT value FROM STRING_SPLIT(b, ','));


Maciej Los

OP ищет способ отображения пропущенных значений в других столбцах.

RickZeeland

Да, Ответ далек от завершения, я знаю, проблема в том, что у меня даже больше не установлен SQL Server, так как мы сейчас используем PostgreSQL, так что, возможно, кто-то с установленным SQL Server может ответить на этот вопрос лучше (предполагая, что OP использует SQL Server) ...