[SQL] SQL의 문자열에 캐리지 리턴에 대한 쿼리 및 궁극적으로 캐리지 리턴을 제거
SQLSQL의 문자열에 캐리지 리턴에 대한 쿼리 및 궁극적으로 캐리지 리턴을 제거
SQL의 문자열에 캐리지 리턴에 대한 쿼리 및 궁극적으로 캐리지 리턴을 제거
나는 테이블의 일부 데이터를 가지고 내가 그들을 원하지 않는 장소에서 일부 캐리지 리턴이있다. 나는 캐리지 리턴이 포함 된 문자열을 모두 얻을 수있는 쿼리를 작성하려합니다.
나는이 시도
select * from Parameters
where Name LIKE '%"\n" %'
또한
select * from Parameters
where Name LIKE '\r'
'
모두는 유효한 SQL하지만 내가 무엇을 찾고 반환되지 않습니다. 나는처럼 명령 또는 다른 명령을 사용해야합니까? 어떻게 쿼리에 캐리지 리턴을받을 수 있나요?
캐리지 리턴은 두 줄의 끝 (중간에있을 수 있습니다)에 필요하지 않습니다.
해결법
-
==============================
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) || '%'
-
==============================
2.주요 문제는 CR / LF를 제거하는 것이었다. 바꾸기와 문자 기능을 사용하면 나를 위해 작동합니다 :
주요 문제는 CR / LF를 제거하는 것이었다. 바꾸기와 문자 기능을 사용하면 나를 위해 작동합니다 :
Select replace(replace(Name,char(10),''),char(13),'')
포스트 그레스 또는 Oracle SQL의 경우, 대신 CHR 함수를 사용합니다 :
replace(replace(Name,CHR(10),''),CHR(13),'')
-
==============================
3.에서 SQL 서버 내가 사용합니다 :
에서 SQL 서버 내가 사용합니다 :
WHERE CHARINDEX(CHAR(13), name) <> 0 OR CHARINDEX(CHAR(10), name) <> 0
이 캐리지 리턴과 라인 피드를 모두 검색합니다.
당신이 탭을 검색하려면 너무 단지 추가 :
OR CHARINDEX(CHAR(9), name) <> 0
-
==============================
4.또한 정규 표현식을 사용할 수 있습니다 :
또한 정규 표현식을 사용할 수 있습니다 :
SELECT * FROM Parameters WHERE Name REGEXP '\n';
-
==============================
5.이 작품 : 선택 * 테이블의 경우 열 같은 '% (히트 입력) %'
이 작품 : 선택 * 테이블의 경우 열 같은 '% (히트 입력) %'
괄호를 무시하고 새로운 라인을 소개하고 Enter 키를 누르십시오.
-
==============================
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]
-
==============================
7.첫 번째 쿼리의 따옴표를 생략합니다.
첫 번째 쿼리의 따옴표를 생략합니다.
... LIKE '%\n%'
-
==============================
8.이것은 또한 작동
이것은 또한 작동
SELECT TRANSLATE(STRING_WITH_NL_CR, CHAR(10) || CHAR(13), ' ') FROM DUAL;
-
==============================
9.이런 식으로 뭔가 나를 위해 작동하는 것 같다 :
이런 식으로 뭔가 나를 위해 작동하는 것 같다 :
SELECT * FROM Parameters WHERE Name LIKE '%\n%'
-
==============================
10.당신이 함수를 만드는 것을 고려하는 경우에,이 시도 : 알리다 @schema은 sysname = 'DBO' , @tablename는 sysname = 'mvtEST' (2000) NVARCHAR를 @cmd , @ColName은 sysname
당신이 함수를 만드는 것을 고려하는 경우에,이 시도 : 알리다 @schema은 sysname = 'DBO' , @tablename는 sysname = 'mvtEST' (2000) NVARCHAR를 @cmd , @ColName은 sysname
DECLARE @NewLine Table (ColumnName Varchar(100) ,Location Int ,ColumnValue Varchar(8000) ) SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @tablename AND DATA_TYPE LIKE '%CHAR%' DECLARE looper CURSOR FAST_FORWARD for SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @tablename AND DATA_TYPE LIKE '%CHAR%' OPEN looper FETCH NEXT FROM looper INTO @ColName WHILE @@fetch_status = 0 BEGIN SELECT @cmd = 'select ''' +@ColName+ ''', CHARINDEX(Char(10), '+ @ColName +') , '+ @ColName + ' from '+@schema + '.'+@tablename +' where CHARINDEX(Char(10), '+ @ColName +' ) > 0 or CHARINDEX(CHAR(13), '+@ColName +') > 0' PRINT @cmd INSERT @NewLine ( ColumnName, Location, ColumnValue ) EXEC sp_executesql @cmd FETCH NEXT FROM looper INTO @ColName end CLOSE looper DEALLOCATE looper SELECT * FROM @NewLine
from https://stackoverflow.com/questions/1337196/sql-query-for-a-carriage-return-in-a-string-and-ultimately-removing-carriage-ret by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 JSON에 MySQL 데이터베이스를 내보내려면? (0) | 2020.06.24 |
---|---|
[SQL] DB2의 버전을 확인하는 방법 (0) | 2020.06.24 |
[SQL] pyodbc 및 MS-Access를 사용하여 파이썬 cursor.execute에서 실제 SQL 쿼리를 참조하는 방법 (0) | 2020.06.24 |
[SQL] 독특한 증분 값을 테이블에 업데이트 INT 열 (0) | 2020.06.24 |
[SQL] CSV 파일에서 SQL 문 삽입 생성 (0) | 2020.06.23 |