一个回车的SQL查询返回一个string,并最终删除回车
一个回车的SQL查询返回一个string,并最终删除回车
我在表格中有一些数据,并且在我不想要的地方有一些回车符。 我想写一个查询来获取所有包含回车的string。
我试过这个
select * from Parameters where Name LIKE '%"\n" %'
也
select * from Parameters where Name LIKE '\r'
“
两个都是有效的SQL,但没有返回我正在寻找的东西。 我需要使用Like命令还是使用其他命令? 如何获得回车查询?
回车不一定在行的末尾(可能在中间)。
这将是缓慢的,但如果是一次性的事情,请尝试…
select * from parameters where name like '%'+char(13)+'%' or name like '%'+char(10)+'%'
请注意,ANSI SQLstring连接运算符是“||”,因此可能需要:
select * from parameters where name like '%' || char(13) || '%' or name like '%' || char(10) || '%'
主要的问题是删除CR / LF。 使用replace和char函数适用于我:
Select replace(replace(Name,char(10),''),char(13),'')
对于Postgres或Oracle SQL,请改用CHR函数:
replace(replace(Name,CHR(10),''),CHR(13),'')
在SQL Server中,我会使用
where charindex(char(13), name)<>0
你也可以使用正则expression式:
SELECT * FROM Parameters WHERE Name REGEXP '\n';
这个工作:select * from table where''%(hit enter)%'
忽略括号并按回车来引入新行。
省略您的第一个查询中的双引号。
... LIKE '%\n%'
这也适用
SELECT TRANSLATE(STRING_WITH_NL_CR, CHAR(10) || CHAR(13), ' ') FROM DUAL;
像这样的东西似乎为我工作:
SELECT * FROM Parameters WHERE Name LIKE '%\n%'