我想从我的MySQL列中删除尾随换行符。trim()只删除空格,但我也想删除尾随的换行符。有人能建议吗?
krugob8w1#
您可以直接从SQL中替换它们,方法是在末尾匹配“\r”,然后替换该“\r”。范例:
UPDATE Person SET firstName = REPLACE(firstName, '\n', '') where firstName LIKE '%\n'
或
UPDATE Person SET firstName = REPLACE(firstName, '\r', '') where firstName LIKE '%\r'
yzckvree2#
只是遇到了这个问题,就这样解决了。
UPDATE table_name SET col_name = REPLACE(TRIM(TRAILING ' ' FROM col_name), TRIM(TRAILING '\r' FROM col_name), TRIM(TRAILING '\n' FROM col_name))
这将删除新行(\n)、回车符(\r)和空格。
yuvru6vn3#
这将删除所有转义字符:
TRIM(TRAILING '\\' FROM (REPLACE(REPLACE(REPLACE(column_name, '\n', ' '), '\r', ' '), '\\', ' ')))
n53p2ov04#
根据操作系统的不同,回车将是“\r\n”或只是“\n”。它不会总是“\r\n”。正确的清理方法是首先删除换行符后面的空格。然后删除换行符转义符,然后删除可能出现在换行符之前的空格。
UPDATE table SET column = TRIM(TRAILING ' ' FROM TRIM(TRAILING '\r' FROM TRIM(TRAILING '\n' FROM TRIM(TRAILING ' ' FROM column))));
这对于有嵌套尾随空格和新行的更复杂的情况不起作用。你需要正则表达式替换它,这在所有数据库版本中都不可用。
UPDATE table SET column = REGEXP_REPLACE(column, '[ \\r\\n]*$', '');
7bsow1i65#
我使用以下查询将数据库内容中不需要的字符(空格、分隔符等)替换为空格。SQL从“fieldName”字段中删除了以下字符:1.制表符\t“CHAR(9)”替换为空格“CHAR(32)",1.新行\n“CHAR(10)”替换为空格“CHAR(32)",1.回车\r“CHAR(13)”替换为空格“CHAR(32)",1.双空格“CHAR(32)+CHAR(32)”替换为空格“CHAR(32)",1.最后再修剪
这是我最喜欢的:
UPDATE tableName SET fieldName = TRIM(REGEXP_REPLACE(fieldName, '[[:space:]]+', CHAR(32))) -- the same as '\s+') WHERE 1;
这在毫秒内运行数千条记录。:)
首先,我使用了以下查询,它做了同样的事情:
UPDATE tableName SET fieldName = TRIM( REPLACE( REPLACE( REPLACE( REPLACE(fieldName, CHAR(9), CHAR(32)), CHAR(13), CHAR(32)), CHAR(10), CHAR(32)), CONCAT(CHAR(32), CHAR(32)), CHAR(32)) ) WHERE 1;
然后我使用以下查询来做同样的事情:受Joel Karunungan的启发,下面的查询做了同样的事情:
UPDATE tableName SET fieldName = TRIM(REGEXP_REPLACE(REGEXP_REPLACE(fieldName, '[\\t\\r\\n]', ' '), '\\s+', ' ')) WHERE 1;
但现在最上面的一个运行在毫秒。
ghhkc1vu6#
试试这样的方法:
REPLACE(FIELD,'\r\n',' ')
aor9mmx17#
另一个投票支持沃勒克的想法,但更具体地说:
Update YOURTABLENAME set YOURCOLUMNNAME = replace(YOURCOLUMNNAME, '\r\n','')
本质上,这应该取代回车和回车符。祝你好运
fsi0uk1n8#
基于EternalHour的answer:
UPDATE TABLE_NAME SET `COLUMN_NAME` = TRIM(TRIM(TRAILING '\r' FROM TRIM(TRAILING '\n' FROM TRIM(`COLUMN_NAME`))))
这一个逐个删除尾随的\r\n,所以它是一个换行符或一个回车符或两者兼而有之,它将被剥离,并且还删除了过程前后的空格。
\r\n
wswtfjt79#
为了简单起见,你可以假设在 * 大多数 * 情况下,字符是空格,\r,\n或\r\n的组合,所以按顺序修剪它们:UPDATE table_name SET col_name = TRIM(TRAILING“”FROM TRIM(TRAILING“\r”FROM TRIM(TRAILING“\n”FROM col_name)
9条答案
按热度按时间krugob8w1#
您可以直接从SQL中替换它们,方法是在末尾匹配“\r”,然后替换该“\r”。
范例:
或
yzckvree2#
只是遇到了这个问题,就这样解决了。
这将删除新行(\n)、回车符(\r)和空格。
yuvru6vn3#
这将删除所有转义字符:
n53p2ov04#
根据操作系统的不同,回车将是“\r\n”或只是“\n”。它不会总是“\r\n”。
正确的清理方法是首先删除换行符后面的空格。然后删除换行符转义符,然后删除可能出现在换行符之前的空格。
这对于有嵌套尾随空格和新行的更复杂的情况不起作用。你需要正则表达式替换它,这在所有数据库版本中都不可用。
7bsow1i65#
我使用以下查询将数据库内容中不需要的字符(空格、分隔符等)替换为空格。
SQL从“fieldName”字段中删除了以下字符:
1.制表符\t“CHAR(9)”替换为空格“CHAR(32)",
1.新行\n“CHAR(10)”替换为空格“CHAR(32)",
1.回车\r“CHAR(13)”替换为空格“CHAR(32)",
1.双空格“CHAR(32)+CHAR(32)”替换为空格“CHAR(32)",
1.最后再修剪
这是我最喜欢的:
这在毫秒内运行数千条记录。:)
首先,我使用了以下查询,它做了同样的事情:
然后我使用以下查询来做同样的事情:受Joel Karunungan的启发,下面的查询做了同样的事情:
但现在最上面的一个运行在毫秒。
ghhkc1vu6#
试试这样的方法:
aor9mmx17#
另一个投票支持沃勒克的想法,但更具体地说:
本质上,这应该取代回车和回车符。
祝你好运
fsi0uk1n8#
基于EternalHour的answer:
这一个逐个删除尾随的
\r\n
,所以它是一个换行符或一个回车符或两者兼而有之,它将被剥离,并且还删除了过程前后的空格。wswtfjt79#
为了简单起见,你可以假设在 * 大多数 * 情况下,字符是空格,\r,\n或\r\n的组合,所以按顺序修剪它们:
UPDATE table_name SET col_name = TRIM(TRAILING“”FROM TRIM(TRAILING“\r”FROM TRIM(TRAILING“\n”FROM col_name)