2011-01-07 2 views

ответ

5

Вы можете использовать функцию COALESCE что-то вроде этого:

COALESCE(yourfield, '') 
0

Хороший вопрос, а так же актуальна сегодня, как это было в 2011 году я использую хранимую процедуру для этого, которым принимает имя таблицы в качестве аргумент. Впоследствии он преобразует все нулевые значения в пустые строки (''), используя подготовленный оператор и без курсоров, поскольку курсоры - это не-SQL. Я проверил это с таблицей, с некоторыми 200 столбцов и в результате prepaired заявление, что это около 15000 символов:

CREATE DEFINER=`root`@`localhost` PROCEDURE `ExportFixNull`(
    in tblname tinytext) 
BEGIN 

set @string=concat(
    "Update ",@tblname," set ", 
    (
     select group_concat(column_name,"=ifnull(",column_name,",'')") 
     from information_schema.columns 
     where [email protected] 
    ) 
    ,";" 
); 

prepare s1 from @string; 
execute s1; 
drop prepare s1; 

В основном SQL-файла, есть заявление

SET @@group_concat_max_len = 60000; 

, что может иметь решающее значение.

Подробнее (на голландском): http://wiki.devliegendebrigade.nl/SELECT_INTO_OUTFILE_%28MySQL%29

С уважением, Йерун Strompf

Смежные вопросы