在字符串中的回车符SQL查询,并最终移除回车(SQL query for a carriage re

2019-07-03 19:10发布

在字符串中的回车符SQL查询,并最终移除回车

我有一个表中的一些数据,并有在地的一些回车,我不希望他们。 我想编写一个查询来获取所有包含回车符串。

我想这

select * from Parameters
where Name LIKE '%"\n" %'

select * from Parameters
where Name LIKE '\r'

两者都是有效的SQL,但没有返回我所期待的。 我是否需要使用命令或不同的命令? 如何获取回车进入查询?

回车是不一定在任一线路的端部(可以是在中间)。

Answer 1:

这将是缓慢的,但如果它是一次性的事情,尝试...

select * from parameters where name like '%'+char(13)+'%' or name like '%'+char(10)+'%'

需要注意的是ANSI SQL字符串连接运算符是“||”,所以它可能需要:

select * from parameters where name like '%' || char(13) || '%' or name like '%' || char(10) || '%'


Answer 2:

主要的问题是,除去CR / LF。 使用替代和焦功能,为我工作:

Select replace(replace(Name,char(10),''),char(13),'')

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

       replace(replace(Name,CHR(10),''),CHR(13),'')


Answer 3:

在SQL Server中,我会用:

WHERE CHARINDEX(CHAR(13), name) <> 0 OR CHARINDEX(CHAR(10), name) <> 0

这将搜索这两个回车换行

如果你想搜索的标签也只是补充:

OR CHARINDEX(CHAR(9), name) <> 0


Answer 4:

您还可以使用正则表达式:

SELECT * FROM Parameters WHERE Name REGEXP '\n';


Answer 5:

这个工程:SELECT * FROM表,其中列LIKE '%(按回车键)%'

忽略括号并按Enter键引进新的生产线。



Answer 6:

你可以创建一个函数:

CREATE FUNCTION dbo.[Check_existance_of_carriage_return_line_feed]
(
      @String VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
BEGIN
DECLARE @RETURN_BOOLEAN INT

;WITH N1 (n) AS (SELECT 1 UNION ALL SELECT 1),
N2 (n) AS (SELECT 1 FROM N1 AS X, N1 AS Y),
N3 (n) AS (SELECT 1 FROM N2 AS X, N2 AS Y),
N4 (n) AS (SELECT ROW_NUMBER() OVER(ORDER BY X.n)
FROM N3 AS X, N3 AS Y)

SELECT @RETURN_BOOLEAN =COUNT(*)
FROM N4 Nums
WHERE Nums.n<=LEN(@String) AND ASCII(SUBSTRING(@String,Nums.n,1)) 
IN (13,10)    

RETURN (CASE WHEN @RETURN_BOOLEAN >0 THEN 'TRUE' ELSE 'FALSE' END)
END
GO

然后你可以简单的运行这样的查询:

SELECT column_name, dbo.[Check_existance_of_carriage_return_line_feed] (column_name)
AS [Boolean]
FROM [table_name]


Answer 7:

从忽略第一个查询双引号。

... LIKE '%\n%' 


Answer 8:

这也适用

SELECT TRANSLATE(STRING_WITH_NL_CR, CHAR(10) || CHAR(13), '  ') FROM DUAL;


Answer 9:

像这样的东西似乎为我工作:

SELECT * FROM Parameters WHERE Name LIKE '%\n%'


文章来源: SQL query for a carriage return in a string and ultimately removing carriage return