Как разделить запросы в разных условиях и проверить, в каком состоянии происходит сбой запроса в c # - PullRequest
0 голосов
/ 29 апреля 2018

Я пишу код, в котором, если мы поместим запрос, он покажет, какое предложение where запроса не получает никаких данных в c #.

Структура запроса аналогична

select * from ABD where a=0 and b= 42 and c=(Select c from azs) or f=89 or x=10

1 Ответ

0 голосов
/ 29 апреля 2018

Если вы работаете с известными запросами, вы можете написать запрос, чтобы указать, какие условия условий возвращают true или false для каждой строки следующим образом:

select
  case when a=0 then 1 else 0 end as 'term1',
  case when b=42 then 1 else 0 end as 'term2',
  case when c=(select c from azs) then 1 else 0 end as 'term3',
  case when f=89 then 1 else 0 end as 'term4',
  case when x=10 then 1 else 0 end as 'term5'
from ABD

Если ваша проблема носит более общий характер, так как вы не знаете фактические запросы заранее, вам нужно написать программу, которая сможет анализировать входной запрос в его отдельных терминах. Это может быть сделано для простых сценариев, используя строку index-of и split, и аналогичные, чтобы найти отдельные термины. Или может быть сделано путем реализации простого парсера SQL. Я полагаю, что Irony является отличной платформой для синтаксических анализаторов в C # и даже включает в себя пример грамматики SQL .

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