SQL Как сравнить, если переменная совпадает со значением в столбце базы данных? - PullRequest
0 голосов
/ 02 октября 2018

У меня проблема в следующем:

Я работаю с системой заявок, которая использует плагины для реализации рабочих процессов.В этом случае я использую SQL для предварительной сортировки входящих писем.SQL-запрос выглядит следующим образом:

SELECT Count(Case when {MSG_CC_002_DeviceReg_MailBody} LIKE '%You have received an invoice from%' Then 1 END);

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

В таблице всего два столбца: фразу ID и фразу.{MSG_CC_002_DeviceReg_MailBody} - это переменная, которую необходимо сравнить со значениями столбца.Так что, если переменная совпадает с записью в столбце, она должна просто вернуть 1.

[Edit:] Это только одна из вещей, для которых я хочу использовать это, у меня также есть переменная {MSG_CC_002_DeviceReg_MailSender}, котораяпредоставит адрес электронной почты, который я хочу сравнить с аналогичной таблицей, содержащей адреса электронной почты.

Возможно ли это?Если так - как?

Ответы [ 3 ]

0 голосов
/ 02 октября 2018

Вы можете использовать join или подзапрос:

select count(*)
from t
where exists (select 1
              from othertable ot
              where {MSG_CC_002_DeviceReg_MailBody} LIKE '%' + ot.phrase + '%' 
             ) ;
0 голосов
/ 02 октября 2018

Это будет медлительным, если у вас много фраз или адресов электронной почты, но это даст вам то, что вы хотите.

SELECT COUNT(*) AS RetValue
FROM PhraseTable 
WHERE {MSG_CC_002_DeviceReg_MailBody} LIKE '%' + phrase + '%'; 
0 голосов
/ 02 октября 2018

Да, это возможно, вы можете добиться этого с помощью динамического запроса.По сути, вам нужно создать запрос как строку, а затем выполнить его.

Примеры и дополнительную информацию о динамическом запросе можно найти по следующей ссылке:

https://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...