我有一个文本列,它的内容在字符串的前后混合了换行符和空格字符。我试图编写一个SELECT
语句,它向我显示没有前导和尾随垃圾的内容。
以下查询将修剪空白:
SELECT TRIM(column)
FROM table;
而这一个修剪换行符:
SELECT TRIM('\n' FROM column)
FROM table;
我也试过this answer,但它不工作:
SELECT TRIM(BOTH '\t' OR '\n' FROM TRIM(BOTH '\n' OR '\t' FROM TRIM(column)))
FROM table;
有没有一种方法可以消除前导字符和尾随字符的混合?
UPDATE:我不能替换,因为我仍然希望空格/换行符在内容中出现时出现。
我有一些字段,一个空格后面跟着一堆换行符,这些换行符后面跟着更多的空格/换行符。
5条答案
按热度按时间wribegjk1#
不幸的是,
TRIM(BOTH '\n' OR '\r' FROM myfield)
不工作。所以下面的代码只修剪了一个换行符(\r\n
)语句,而不是多个:请注意,上面的语句并没有将
<space>\r\n mytext
修剪为mytext
,因为\r\n
不在开头。MariaDB解决方案
如果你使用的是MariaDB(https://mariadb.com/kb/en/mariadb/pcre/),你可以使用正则表达式来解决你的问题。下面的表达式从文本中删除了所有白色前缀:
tvmytwxo2#
另一种方法是将'\n'替换为空字符串,然后修剪它。代码如下:
或者,如果你喜欢,你可以调用trim两次。
2g32fytz3#
下面的查询将帮助删除
mysql
列数据中的回车符(换行符使用新行字符的ASCII值,我可以将其替换为空
zzzyeukh4#
最后用Ruby实现:
mf98qq945#
你可以使用REGEXP_REPLACE来修剪两端,这是我用来修剪换行符\r和\n,缩进字符\t和空格的。