如何检查 SQL 结果是不是包含换行符?
Posted
技术标签:
【中文标题】如何检查 SQL 结果是不是包含换行符?【英文标题】:How can I check if an SQL result contains a newline character?如何检查 SQL 结果是否包含换行符? 【发布时间】:2010-10-06 12:14:23 【问题描述】:我有一个包含字符串 lol\ncats
的 varchar 列,但是在 SQL Management Studio 中它显示为 lol cats
。
如何检查\n
是否存在?
【问题讨论】:
【参考方案1】:SELECT *
FROM your_table
WHERE your_column LIKE '%' + CHAR(10) + '%'
或者……
SELECT *
FROM your_table
WHERE CHARINDEX(CHAR(10), your_column) > 0
【讨论】:
【参考方案2】:将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) + '%'
【讨论】:
+1 表示CHAR(10)
和CHAR(13)
对应的字符。【参考方案3】:
对于任何最终来到这里的 mysql 用户:
SELECT *
FROM your_table
WHERE your_column LIKE CONCAT('%', CHAR(10), '%')
【讨论】:
同样,此方案在 SQL 2012+ 中也有效【参考方案4】:在 Oracle 中,尝试以下命令
SELECT * FROM table_name WHERE field_name LIKE ('%'||chr(10)||'%');
【讨论】:
这是唯一对我有用的!你可能想在代码示例中将chr
更改为char
,因为chr
不是一件事,我必须这样做char
才能工作【参考方案5】:
对我来说,以下在 MySQL Workbench 和 HeidiSQL(与 MySQL 一起工作)中工作得很好,而不必使用 \n
的 char()
变体:
SELECT * FROM table_name WHERE field_name LIKE '%\n%'
【讨论】:
【参考方案6】:SELECT *
FROM Table
WHERE PATINDEX('%' + CHAR(13) + CHAR(10) + '%', Column) > 0
【讨论】:
【参考方案7】:SELECT * FROM mytable WHERE mycolumn REGEXP "\n";
【讨论】:
【参考方案8】: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
=> 列名是你要细化的列 new
换行或回车。
right(cc.columnname,1)
=> 这将只显示一个字符
在末尾。通常它只显示空白
ASCII(right(cc.columnname,1))
=> 在这里我们得到的 Acii 值不是
可打印的值。
通过查看这个 ascii 值,我们可以断定它是哪个项目。例如,如果此 acsci 值为 13,则回车,如果为 10,则新行我们必须使用它来过滤该记录
cc.*
=> 这给出了表格中的所有值(显示目的)
where ASCII(right(cc.columnname,1)) = 13
=> 在这里我找到了所有
值为 13 asci 值,因此过滤 ascii 值 13
它对我有用。
【讨论】:
【参考方案9】:对于任何最终来到这里的 Redshift 用户:
select * from your_table where your_column ~ '[\r\n]+'
【讨论】:
以上是关于如何检查 SQL 结果是不是包含换行符?的主要内容,如果未能解决你的问题,请参考以下文章
sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决