MySql Query Замените NULL пустой строкой в ​​Select - PullRequest
55 голосов
/ 05 марта 2012

Как заменить значение NULL в выделении пустой строкой? Не очень профессионально выводить значения NULL.

Это очень необычно и, основываясь на моем синтаксисе, я ожидаю, что это сработает. Надеясь объяснить, почему это не так.

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test;

Пример того, как выглядит исходная таблица, что я хочу, и что на самом деле печатает:

original     wanted      what actually prints
--------     ------      ---------------------
value1       value1      
NULL                     NULL
value2       value2      
NULL                     NULL

Как вы можете видеть, это противоположно тому, что я хочу, поэтому я попытался переключить IS NULL на IS NOT NULL и, конечно, это не исправило его, также попытался поменять положение дел, когда это не сработало.

Edit: Кажется, что 3 решения, приведенные ниже, все решают задачу. привет

select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test

Ответы [ 10 ]

101 голосов
/ 05 марта 2012

Если вам действительно нужно вывести все значения, включая NULL:

select IFNULL(prereq,"") from test
72 голосов
/ 05 марта 2012
SELECT COALESCE(prereq, '') FROM test

Coalesce вернет первый ненулевой аргумент, переданный ему слева направо.Если все аргументы равны NULL, он вернет NULL, но мы вынуждаем пустую строку там, поэтому нулевые значения не будут возвращены.

Также обратите внимание, что поддерживается оператор COALESCE в стандартном SQL.Это не относится к IFNULL .Так что это хорошая практика, чтобы использовать первое.Кроме того, имейте в виду, что COALESCE поддерживает более 2 параметров и будет перебирать их, пока не будет найдено ненулевое совпадение.

14 голосов
/ 05 марта 2012

Попробуйте ниже;

  select if(prereq IS NULL ," ",prereq ) from test
4 голосов
/ 22 марта 2012

Некоторые из этих встроенных функций должны работать:

Coalesce
Is Null
IfNull
3 голосов
/ 10 октября 2015

Исходная форма почти идеальна, вам просто нужно пропустить prereq после CASE :

SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;
2 голосов
/ 05 марта 2012

Попробуйте COALESCE.Возвращает первое ненулевое значение.

SELECT COALESCE(`prereq`, ' ') FROM `test`
0 голосов
/ 19 февраля 2019
select IFNULL(`prereq`,'') as ColumnName FROM test

этот запрос выбирает значения "prereq" и, если любое из значений равно NULL, он показывает пустую строку, как вам нравится. Так, он показывает все значения, но значения NULL показываются пустыми

0 голосов
/ 17 февраля 2019
UPDATE your_table set your_field="" where your_field is null
0 голосов
/ 22 октября 2018

У меня есть пустые значения (NULL как значение по умолчанию) в необязательном поле в базе данных. Они не приводят к тому, что значение «null» отображается на веб-странице. Однако значение «null» вводится в действие при создании данных через форму ввода веб-страницы. Это произошло из-за того, что JavaScript принял ноль и переписал его в строку «ноль» при отправке данных через AJAX и jQuery. Удостоверьтесь, что это не основная проблема, поскольку простое выполнение вышеупомянутого является всего лишь бандой для реальной проблемы. Я также реализовал вышеуказанное решение IFNULL (...) в качестве двойной меры. Спасибо.

0 голосов
/ 05 марта 2012

Попробуйте, это также должно избавить от этих пустых строк:

SELECT prereq FROM test WHERE prereq IS NOT NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...