创建过程以在MySQL中删除新行

问题描述

大家好。

我创建了一个过程来创建句子,以从数据库删除所有表的列中的字符\n

当我调用引入数据库的过程时,它会运行,但是并没有指示\n(实际上,它给您换行符,而我不喜欢换行符)

代码是这样的:

DELIMITER //

CREATE PROCEDURE `p_corregir_saltos_de_linea_MysqL` (IN v_bbdd VARCHAR(800))

BEGIN

SET SESSION group_concat_max_len = 1000000;

SELECT CONCAT('UPDATE `',TABLE_SCHEMA,'`.`',TABLE_NAME,'` SET `',COLUMN_NAME,'` = REPLACE(`','`,''\n'','''');')

FROM `@R_228_4045@ion_schema`.`COLUMNS`

WHERE `TABLE_NAME` IN (SELECT `TABLE_NAME` FROM `@R_228_4045@ion_schema`.`TABLES` WHERE `TABLE_TYPE` = 'BASE TABLE')

AND `TABLE_SCHEMA` = v_bbdd

AND `COLUMN_TYPE` LIKE 'varchar%';

END //

DELIMITER ;

我需要在程序中进行哪些更改?

解决方法

该过程仅返回如下SQL代码:

UPDATE `database_name`.`table_name` SET `column_name` = REPLACE(`column_name`,'
','');

由您自己决定随后运行代码。但是,根据运行方式的不同,您可能会发现您的工具将其原始Unix换行符替换为其默认换行符。生成转义序列会更健壮。为此,您需要一个额外的反斜杠层:

SELECT CONCAT(…'` SET `',COLUMN_NAME,'` = REPLACE(`','`,''\\n'','''');')
                                                                   -- ^ One more