SQL查询字符串中的回车并最终删除回车符

Mae*_*024 48 sql char carriage-return sql-like

SQL查询字符串中的回车并最终删除回车符

我在表中有一些数据,并且在我不想要的地方有一些回车.我试图编写一个查询来获取包含回车符的所有字符串.

我试过这个

select * from Parameters
where Name LIKE '%"\n" %'
Run Code Online (Sandbox Code Playgroud)

select * from Parameters
where Name LIKE '\r'
Run Code Online (Sandbox Code Playgroud)

"

两者都是有效的SQL,但没有返回我要找的东西.我是否需要使用Like命令或其他命令?如何让回车进入查询?

回车不一定在线的末端(可能在中间).

KM.*_*KM. 65

这会很慢,但如果是一次性的话,试试......

select * from parameters where name like '%'+char(13)+'%' or name like '%'+char(10)+'%'
Run Code Online (Sandbox Code Playgroud)

请注意,ANSI SQL字符串连接运算符是"||",因此可能需要:

select * from parameters where name like '%' || char(13) || '%' or name like '%' || char(10) || '%'
Run Code Online (Sandbox Code Playgroud)

  • @mmcrae如果查看编辑历史记录,您会看到"ANSI SQL"部分已添加到我的答案中.我从来没有在我做过的任何SQL中使用过`||`.我从不真正关心ANSI SQL equivelents.我只是编写当前数据库的代码并完成它.根据我的经验,您永远不会从一个数据库供应商转换为另一个数据库供应商.每个供应商都添加了许多额外的SQL命令或变体,超出和/或代替ANSI标准,这使得几乎不可能编写任何复杂的代码并且100%ANSI兼容. (6认同)
  • Postgresql使用函数名称`chr`而不是`char`. (4认同)
  • || 不是OR.在postgresql中是连接. (3认同)
  • @jipipayo,我不喜欢人们这样编辑我的答案。 (2认同)

小智 59

主要问题是删除CR/LF.使用replace和char函数对我有用:

Select replace(replace(Name,char(10),''),char(13),'')
Run Code Online (Sandbox Code Playgroud)

对于Postgres或Oracle SQL,请使用CHR函数:

       replace(replace(Name,CHR(10),''),CHR(13),'')
Run Code Online (Sandbox Code Playgroud)


HLG*_*GEM 9

在SQL Server中我会使用:

WHERE CHARINDEX(CHAR(13), name) <> 0 OR CHARINDEX(CHAR(10), name) <> 0
Run Code Online (Sandbox Code Playgroud)

这将搜索回车换行.

如果您想要搜索选项卡,只需添加:

OR CHARINDEX(CHAR(9), name) <> 0
Run Code Online (Sandbox Code Playgroud)