MySQL возвращает пустое поле: CONCAT (nonEmpty1, empty2, nonEmpty3) = NULL

В качестве apparanty никто не упоминал об этом: вы также можете использовать стандарт Nump Docstring.

Наполеанское расширение сфинкса для разбора докстронгов в стиле Google (рекомендуется в ответ @Nathan) также поддерживает Docstring в стиле Numpy и делает короткое сравнение обоих.

И последний пример, чтобы дать представление о том, как это выглядит:

def func(arg1, arg2):
    """Summary line.

    Extended description of function.

    Parameters
    ----------
    arg1 : int
        Description of arg1
    arg2 : str
        Description of arg2

    Returns
    -------
    bool
        Description of return value

    See Also
    --------
    otherfunc : some related other function

    Examples
    --------
    These are written in doctest format, and should illustrate how to
    use the function.

    >>> a=[1,2,3]
    >>> print [x + 3 for x in a]
    [4, 5, 6]
    """
    return True

13
задан Piskvor 11 June 2009 в 14:28
поделиться

3 ответа

Из Google: http://bugs.mysql.com/bug.php?id=480

[23 May 2003 4:32] Александр Керемидарский

Спасибо, что нашли время написать нам, но это не так Жук. Пожалуйста, дважды проверьте документацию, доступную на http://www.mysql.com/documentation/ и инструкции по как сообщить об ошибке на http://bugs.mysql.com/how-to-report.php

Это документированное поведение функции CONCAT ().

Из Руководства, глава 6.3.2 Строковые функции

CONCAT (str1, str2, ...) Возвращает строку, полученную в результате объединения аргументов. Возвращает NULL, если есть аргумент равен NULL

Используйте вместо него CONCAT_WS () или оберните параметры NULLable с помощью функции IFNULL ().

Документация и использование для CONCAT_WS: http://dev.mysql.com/doc/refman/5.0/en /string-functions.html#function_concat-ws[1213 impression

25
ответ дан 1 December 2019 в 17:26
поделиться

Из документов MYSQL

CONCAT () возвращает NULL, если какой-либо аргумент равно NULL.

вы хотите использовать CONCAT_WS ()

CONCAT_WS(separator,str1,str2,...)

Но лучше всего просто вернуть его и использовать php, потому что, если вам нужен другой формат или только одно из этих полей, позже вам придется создать еще один db звоните

16
ответ дан 1 December 2019 в 17:26
поделиться

В MySQL присоединение любой строки к значению NULL приводит к NULL. Вы должны проверить значение NULL перед объединением с использованием IFNULL:

SELECT CONCAT(IFNULL(fName1,''),' ',IFNULL(mName2,''),' ',IFNULL(lName3,'')) AS userName 
FROM users 
WHERE level > 10
11
ответ дан 1 December 2019 в 17:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: