我有一个包含字符串lol\ncats
的varchar列,但在SQL Management Studio中它显示为lol cats
。
我该如何检查是否存在\n
?
我有一个包含字符串lol\ncats
的varchar列,但在SQL Management Studio中它显示为lol cats
。
我该如何检查是否存在\n
?
SELECT *
FROM your_table
WHERE your_column LIKE '%' + CHAR(10) + '%'
或者...
SELECT *
FROM your_table
WHERE CHARINDEX(CHAR(10), your_column) > 0
使用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) + '%'
对于任何使用MySQL的同行们,如果他们最终来到这里:
SELECT *
FROM your_table
WHERE your_column LIKE CONCAT('%', CHAR(10), '%')
对于我来说,在使用MySQL Workbench和HeidiSQL(与MySQL一起工作)时,以下内容可以正常工作,而不必使用char()
变体的\n
:
SELECT * FROM table_name WHERE field_name LIKE '%\n%'
在Oracle中,尝试使用以下命令
SELECT * FROM table_name WHERE field_name LIKE ('%'||chr(10)||'%');
LIKE ('%'||chr(10)||'%')
在Postgres中也有效。 - user598656SELECT *
FROM Table
WHERE PATINDEX('%' + CHAR(13) + CHAR(10) + '%', Column) > 0
对于任何使用Redshift的同行,如果你们来到这里:
select * from your_table where your_column ~ '[\r\n]+'
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对我有用。
SELECT * FROM mytable WHERE mycolumn REGEXP "\n";
CHAR(10)
和CHAR(13)
对应的字符。+1 - Brad