Postgresql 개행문자 - postgresql gaehaengmunja

오라클 개행문자 처리

select * from table명 where  instr(필드명, chr(10)) > 0 

MSSQL 개행문자 치환

SELECT deli_no , REPLACE(deli, char(13) + char(10), '\r\n') AS [deli] , REPLACE(CONVERT(varchar(MAX), deli), char(13) + char(10), '<br />') AS [deli] FROM deli_table WHERE deli_no = 9

- REPLACE(REPLACE(컬럼이름, CHR(10), ''), CHR(13), '') AS 컬럼이름

PostgreSQL 개행문자 Select 

select * from 테이블명 where regexp_replace(field, E'[\\n\\r]+', '  ', 'g' ) like '%  %'

데이터 select 할때 가져오면 좋을듯

select regexp_replace(field, E'[\\n\\r]+', ' ', 'g' )

각 데이터베이스 별 개행문자 쿼리입니다. 

개행문자 관련해서는 관련된 DB 쿼리는 모두 추가해놓을께요.. 

Postgresql 개행문자 - postgresql gaehaengmunja

2019/03/16 - [IT/DB] - PostgreSQL 기본 쿼리(1)

2018/01/16 - [IT/DB] - [MSSQL] 기본쿼리 기본문법

Postgresql 개행문자 - postgresql gaehaengmunja

[PostgreSQL] DB내에 개행과 작은따옴표(') 사용

Opensource 기반 툴 사용을 생활화하자!

Postgre 사용하다 보면 개행과 작은따옴표 사용하는 방법을 자꾸 까먹게 되는데, 나 같은 사용자에게 도움이 되라고 적어둔다.

parameter 안에 value값으로 작은 따옴표를 사용하려면 syntax error가 발생하는데 parameter구분을 작은따옴표를 사용하기 때문.. 

정상적인 파일이 아닙니다. 'FAQ' 메뉴를 확인해주세요. 라는 메시지를 출력하려면 작은따옴표를 2번 사용하면 된다.

update code_table
   set value = '정상적인 파일이 아닙니다. ''FAQ'' 메뉴를 확인해주세요.'
 where id = 'error_msg'

개행을 하기 위해서는 엔터만 쳐도 사실 되고

select 'test line 1
test line 2';

E'{value}'로 묶고 그 안에 \n 개행 문자를 삽입하면 된다.

update code_table
   set value = E'정상적인 파일이 아닙니다.\n''FAQ'' 메뉴를 확인해주세요.'
 where id = 'error_msg'

<출처>

https://stackoverflow.com/questions/36028908/postgresql-newline-character

PostgreSQL newline character

How to use newline character in PostgreSQL? This is an incorrect script from my experiment: select 'test line 1'||'\n'||'test line 2'; I want the sql editor display this result from my script ab...

stackoverflow.com

Postgresql 개행문자 - postgresql gaehaengmunja

PostgreSQL에 대한 설명은 아래 웹페이지로 대체

https://d2.naver.com/helloworld/227936

근데 왜 로고가 코끼리야?

http://www.pgsql.ru/db/mw/msg.html?mid=1238939 

pgsql.ru: Re: [HACKERS] PostgreSQL logo.

www.pgsql.ru

원천에서 데이터를 HDFS에 적재할 때, 데이터의 형식은 가끔 상식적이지 않을 때가 있다.

데이터에 엔터가 들어가 있을 줄 누가 아냐구여..?

그러면 컬럼도 밀려서 적재가 된다..ㅜㅜ그럼 다시 재적재 고고..

그래서 초반에 SELECT 할때, 개행문자를 제거하고 가져오는걸로 하자.

DB가 PostgreSQL 기준으로 개행문자 제거를 알아보자.

select regexp_replace(field, E'[\\n\\r]+', ' ', 'g' )

간단하게 요런 형태이다.

더 검색해보니, 역슬래쉬를 깔끔하게 하나만 사용하고자 한다면, E prefix를 제거하면 된다

select regexp_replace(field, '[\n\r]+', ' ', 'g' )

저 'g' flag는 뭔가 싶어서 보니

음 영어가 짧아서..

@Jens as with other regex-engines, 'g' here allows total replacement. Without it, replacements will only occur once per "line," 

which in this case pretty much just means "only once," given that Postgres doesn't count \ns as linebreaks.

이렇게 설명을 달고 있다.

field의 데이터의 전체의 개행을 제거 하느냐, 아니면 한 라인만 제거하느냐의 차이인것 같은데..

개발은 영어도 잘해야 한다.

기승전 영어공부합시다.

SQL> select '안녕하세요' as test from dual;

TEST
----------
안녕하세요

SQL> select '안녕' || chr(10) || '하세요' as test from dual;

TEST
-----------
안녕
하세요


SQL> select '안녕' || ' ' || '하세요' as test from dual;

TEST
-----------
안녕 하세요

쉘 스크립트 작성할 때, function으로 쿼리문을 날릴 때

값을 가져올 때 제대로 못가져와서 봤더니

Postgresql 개행문자 - postgresql gaehaengmunja

노란게 개항표시 (DBeaver 툴)

A

BCD

이런식으로 개행이 들어가있었다. 그래서 자꾸 에러가 났음

개행을 해결하려면 개행이 들어간 컬럼에서 값을 처리할 때

regexp_replace를 써주면 된다

* 개행 처리 방법

select regexp_replace(컬럼값, '[\n\r]+', ' ', 'g' )

g 옵션은 global같음. 개행이 많을 때 하나가 아니고 다 처리한다? 그런거

문자열 상수의 입력 방법

문자열 작성은 작은 따옴표 (’)로 묶어 작성한다.

'문자열'

문자열에서 작은 따옴표를 넣으로면 2개의 작은 따옴표를 연속으로 작성한다.

devkuma=# select 'My father''s car';
    ?column?
-----------------
 My father's car
(1개 행)

문자열 중에 특별히 취급해야하는 문자는 작은 따옴표를 문자로 작성하면 된다. \ 등은 그대로 문자로 처리된다.

문자열은 줄 바꿈(빈칸)을 사이에 두고 이어서 작성하게 되면 하나의 문자열로 처리된다.

devkuma=# select 'Hello'
devkuma-# 'World';
  ?column?
------------
 HelloWorld
(1개 행)

문자열 ‘Hello’와 문자열 ‘World’는 줄 바꿈을 사이에 두고 나뉘어져 있지만 하나의 문자열로 처리된다.

이스케이프 문자열

키보드에서 입력할 수 없는 문자를 문자열에 표시하려는 경우 또는 특별한 문자를 입력하려면, PostgreSQL에서는 이스케이프 문자열을 사용한다. 이스케이프 문자열은 작은 따옴표 앞에 E 또는 e를 넣는다.

E'문자열'
e'문자열'

이스케이프 문자열 중에서는 다음과 같은 특수 문자를 입력할 수 있다.

\b      백스페이스 문자
\f      페이지 나누기
\n      개행
\r      캐리지 리턴
\t      탭 문자
\o      8진수 바이트 값
\xh     16 진수 바이트 값
\uxxxx  16 또는 32 비트의 16 진수 Unicode 문자 값

이스케이프 문자열에서 \을 문자로 사용하는 경우 \\와 같이 2개의 이어서 작성한다. 또한 작은 따옴표를 문자로 작성하는 경우 일반 문자열처럼 ''와 같이 2개를 이이서 작성하는 이외에 \'로도 작성할 수 있다.

아래에서 탭 문자를 포함해서 표시하고 있다.

postgres=# select e'문자\t열';
  ?column?
------------
 문자    열
(1개 행)

숫자 상수 입력 방법

수를 작성하는 경우 그대로 수를 작성하면 된다.

7
105
3.512

소수점을 작성하는 경우, 전후에 적어도 1개의 수가 필요하다.

.552
8.

지수 기호 e를 사용하여 작성할 수도 있다. 그런 경우는 적어도 1개의 e의 뒤에 숫자가 필요하다.

8e5
1.41e-3

숫자 앞에 + 또는 -를 선택한 경우 + 또는 - 숫자의 일부가 아닌 연산자로 처리된다.

-42
+602

비트 문자열 상수의 입력 방법

비트 문자열 상수를 작성하는 경우 일반 문자열 앞에 B 또는 b를 작성한다. 문자열로 사용할 수 있는 문자는 0 또는 1뿐이다.

B'01 '
b'1001 '

2진수 대신 16진수 표기로 작성할 수 있다. 일반 문자열 앞에 X 또는 x를 넣는다. 문자열로 사용할 수 있는 문자는 0에서 9 및 A ~ F이다.

X'3F '
x'A37E '

PostgreSQL에서 문자열이나 숫자 등의 값을 입력 할 경우 방법에 대해 설명하였다.