如何检查 SQL 结果是否包含换行符?

64

我有一个包含字符串lol\ncats的varchar列,但在SQL Management Studio中它显示为lol cats

我该如何检查是否存在\n

9个回答

111
SELECT *
FROM your_table
WHERE your_column LIKE '%' + CHAR(10) + '%'

或者...

SELECT *
FROM your_table
WHERE CHARINDEX(CHAR(10), your_column) > 0

53

使用char(13)代表'\r',使用char(10)代表'\n'

SELECT *
FROM your_table
WHERE your_column LIKE '%' + CHAR(10) + '%'
或者
SELECT *
FROM your_table
WHERE your_column LIKE '%' + CHAR(13) + CHAR(10) + '%'

7
感谢您注意到 CHAR(10)CHAR(13) 对应的字符。+1 - Brad

16

对于任何使用MySQL的同行们,如果他们最终来到这里:

SELECT *
FROM your_table
WHERE your_column LIKE CONCAT('%', CHAR(10), '%')

2
同样地,这个解决方案在SQL 2012+中也是有效的。 - AeroX

5

对于我来说,在使用MySQL Workbench和HeidiSQL(与MySQL一起工作)时,以下内容可以正常工作,而不必使用char()变体的\n

SELECT * FROM table_name WHERE field_name LIKE '%\n%'

3

在Oracle中,尝试使用以下命令

SELECT * FROM table_name WHERE field_name LIKE ('%'||chr(10)||'%');

这是唯一对我有效的!您可能需要在代码示例中将“chr”更改为“char”,因为“chr”不是一个东西,我必须使用“char”才能使其工作。 - user5287133
LIKE ('%'||chr(10)||'%') 在Postgres中也有效。 - user598656

1
SELECT * 
FROM Table 
WHERE PATINDEX('%' + CHAR(13) + CHAR(10) + '%', Column) > 0

0

对于任何使用Redshift的同行,如果你们来到这里:

select * from your_table where your_column ~ '[\r\n]+'

0
select cc.columnname,right(cc.columnname,1),ASCII(right(cc.columnname,1)) ,cc.*
from table_name cc where 
ASCII(right(cc.columnname,1)) = 13

这里

  • cc.columnname => 列名是您想要查找新行或回车符的列。
  • right(cc.columnname,1) => 这将仅显示末尾的一个字符。通常它只显示空格。
  • ASCII(right(cc.columnname,1)) => 在这里,我们获得了该不可打印值的Acii值。

通过查看此ascii值,我们可以得出它是哪个项目。例如,如果此acsci值为13,则为回车符;如果为10,则为新行,我们必须使用此来过滤该记录。

  • cc.* => 这将从表中提取所有值(用于显示目的)
  • where ASCII(right(cc.columnname,1)) = 13 => 在这里,我发现所有值都是13 asci值,因此过滤asci值13

对我有用。


0
SELECT * FROM mytable WHERE mycolumn REGEXP "\n";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接