问题描述
大家好。
我创建了一个过程来创建句子,以从数据库中删除所有表的列中的字符\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