在 MySQL 中搜索包含新行的文本

Search text containing a new line in MySQL

我有一个存储大量产品的 MySQL table。由于一些错误,我用新行添加了一些产品名称。我需要找到他们。以下查询未列出所有预期数据。

SELECT * FROM `products` WHERE `product_name` REGEXP "\r\n";

尝试

SELECT * FROM `products` WHERE `product_name` REGEXP "\n" or `product_name` REGEXP "\r";

这取决于您使用什么方式换行。 不同的文本编辑器程序使用不同的方式来写新行。

尽量只使用“\n”或“\r”和“\n”的组合。

对我来说是这样的:

  SELECT * FROM `products` WHERE `product_name` REGEXP "\n";

http://sqlfiddle.com/#!9/f74000/2

SELECT * FROM `products` WHERE `product_name` REGEXP "\n";

在大多数情况下应该有效

行分隔符从 OS 到 OS 即 \n(Linux 和 MacOS X),\r(MacOS 9 岁及以上)和 \r\n (Windows))。

所以你可以尝试如下:

SELECT * FROM `products` WHERE `product_name` REGEXP "\n" OR `product_name` REGEXP "\r";

以下 select 查询一定适合您

SELECT * FROM `products` WHERE `product_name` REGEXP "[\n\r]";
SELECT * FROM `products` WHERE `product_name` LIKE '%\n\r%';

我有 Oracle 背景,发现这种形式更容易(它适用于 MySql 5.6 on Aws) 希望这可以帮助将来在这里跌跌撞撞的人:)