shwetavaidya30 Ответов: 2

Отображать null, если столбец таблицы имеет значение, разделенное запятыми в SQL server


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

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

select * from indent_master


выход

indnet_no  hire_date   status  rec_name
1          2019-13-09  On     Sonam,Meenakshi,Nalini
2          2019-12-09  on     Sonam


Но когда я пишу запрос
select * from indent_master
where date between '2019-09-01' and '2019-09-30'


выход будет таким

indnet_no  hire_date   status  rec_name
1          2019-13-09  On     null
2          2019-12-09  on     Sonam

OriginalGriff

Вы жалуетесь, что это происходит, или что это должно произойти?

shwetavaidya30

я не хочу null я хочу чтобы данные отображались как есть

2 Ответов

Рейтинг:
2

OriginalGriff

Цитата:
OriginalGriff 2hrs ago
   Are you complaining that this does happen, or that it should happen?
shwetavaidya30 9 mins ago
   i dont want null i want data must display as it is

Тогда это проблема с вашими данными, а не с вашим запросом: если вы абсолютно не укажете, что SQL должен каким-то образом изменить данные (как предложил Мацей Лос), он это сделает всегда возвращает именно то, что он находит в базе данных, которая соответствует вашему запросу.

Я бы начал с рассмотрения вашего состояния и столбца, с которым оно сравнивается: ваши примеры данных не имеют большого смысла, так как кажется, что дата БД хранится yyyy-dd-MM (формат, который я никогда раньше не видел и надеюсь никогда больше не увидеть), в то время как запрос передается как yyyy-MM-dd - a (разумный формат). Это может - например - означать, что ваш столбец даты на самом деле является полем VARCHAR или NVARCHAR, и это может дать вам некоторые очень глупые результаты.

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

(Но ... Я скажу, что хранение CSV - данных в БД всегда плохая идея-это всегда создает проблемы позже и должно быть сделано с отдельной таблицей с внешним ключом, связывающим обратно с исходной строкой.)


Рейтинг:
0

Maciej Los

Цитата:
rec_name, имеющий значение, разделенное запятыми, когда я делаю фильтрацию rec_name с несколькими значениями, показывает как null, но если он содержит одно значение, он будет отображаться



Если я вас хорошо понимаю....
SELECT indnet_no,  hire_date,  status, CASE WHEN CHARINDEX(',', rec_name) > 0 THEN NULL ELSE rec_name END AS rec_name
FROM indent_master
where date between '2019-09-01' and '2019-09-30'


Для получения более подробной информации, пожалуйста, смотрите:
CHARINDEX (Transact-SQL) - SQL Server | Microsoft Docs[^]
CASE (Transact-SQL) - SQL Server | Microsoft Docs[^]


shwetavaidya30

нет, я не хочу null.

shwetavaidya30

нет, я не хочу null.

Maciej Los

Итак, почему же вы все-таки предоставили описание и пример, которые отличаются от информации в вашем комментарии?!?