Правильный выбор полей таблицы, где значение = ноль - PullRequest
0 голосов
/ 23 апреля 2019

Существует список полей (name1, name2, name3), и мне нужно выбрать поле со значением null

Я пытаюсь

select @Listname from Table where (@List is null)

, но это не правильно, это будетсоздайте команду

select name1, name2, name3 from table where (name1, name2, name3 is null)

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

например, мой список

List<string> NameList = new List<string>() { name1, name2, name3 };

значение этого поля name1 = joe, name2 = doe, name3 = null, мой выбор должен выглядеть так: select name3 frome NameTabe where name3 is null

Я использую mssql и пишу на C # как

var nullValue = SqlClient.Main.CreateCommand(@"
                select @nameList 
                from NameTabe
                where (@nameList is null)"
                , new SqlParam("nameList", nameList) { Array = true }
                )
                .ExecScalars<string>();

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Похоже, вы хотите запрос, подобный следующему:

select (case when name1 is null then 'name1'
             when name2 is null then 'name2'
             when name3 is null then 'name3'
        end)
from t
where name1 is null or name2 is null or name3 is null;

Возможно, начинание с правильного синтаксиса поможет вам сконструировать запрос.

Обратите внимание, что иметь только несколько столбцов с одинаковой информациейвыделенный числом (т. е. name1, name2 и т. д.) является признаком проблемы с моделью данных.Я подозреваю, что если бы у вас была правильная модель данных, было бы намного проще выполнить то, что вам действительно нужно.

0 голосов
/ 23 апреля 2019

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

select 'select '+case when name1 is null then name1+',' else '' end+
                +case when name2 is null then name2+',' else '' end+
                +case when name3 is null then name3+',' else '' end 
                +' from table' 
from table

, если вам нужна фильтрация данных по нулевому значению, вы можете использовать это где cluase:

where name1+name2+name3 is null -- at least 1 of them is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...