복붙노트

[SQL] TO_CHAR () 출력에서 ​​빈 패딩을 제거

SQL

TO_CHAR () 출력에서 ​​빈 패딩을 제거

나는이에서보기를 생성합니다 :

create or replace view datetoday as
select to_char(dt, 'yyyy-mm-dd') as date, to_char(dt, 'Day') as weekday from 
(select ('2013-03-01'::date + i) dt from generate_series(0,'2013-03-03'::date - 2013-03-01'::date) 
as t(i)) as t;

그것은 나에게 텍스트 형식으로 평일 정보를 제공합니다. 그럼 내가 사용 :

select date::date, weekday::varchar from datetoday;

이제 표와 같다

2013-3-1 Friday
2013-3-2 Saturday

나는 항목을 선택하려면 :

select * from datetoday where weekday='Friday'

문자 VARYING 텍스트에서를 변경합니다.

길이가 각 단어의 길이에 따라되지 않는 고정 된 것 같다. 예를 들어 '금요일'의 경우 길이 6 수요일 길이 (9)이 있어야합니다. 어떻게 길이가 단어의 실제 길이하자,이를 변경할 수 있습니까?

나중에 내가 다른 테이블의 평일 열이 테이블의 평일 열을 비교합니다 때문입니다. 처럼

where a.weekday=b.weekday

길이가 다양하므로 다른 요일은, JSP에서 사용자로부터입니다. 길이가 고정되어 이제 비교가 실패합니다.

해결법

  1. ==============================

    1.패턴의 날은 '빈 - 패딩 종일 일 9 개 문자를 만들고, 오른쪽에 있습니다. 패딩을 제거하기 위해 FM 템플릿 패턴 수정을 사용합니다 :

    패턴의 날은 '빈 - 패딩 종일 일 9 개 문자를 만들고, 오른쪽에 있습니다. 패딩을 제거하기 위해 FM 템플릿 패턴 수정을 사용합니다 :

    SELECT d::date AS day
         , to_char(d, 'yyyy-mm-dd') AS day_text
         , to_char(d, 'FMDay')      AS weekday
    FROM generate_series('2013-03-01'::date
                       , '2013-03-07'::date
                       , interval '1 day') d;

    또한, 타임 스탬프를위한 generate_series ()을 보여주는. 한 적은 쿼리 수준입니다. 당신이보기에 실제 날짜를해야하는 경우는 실제의 형태 날짜, 텍스트와 다시로 변환하지 않는합니다. 그리고 열 이름과 기본 유형 이름 날짜를 사용하지 마십시오. 대신 하루에 사용. 그리고 난 그냥 텍스트에 대한 텍스트를 사용합니다. VARCHAR로 변환 아무 소용이 없습니다.

  2. from https://stackoverflow.com/questions/22242202/remove-blank-padding-from-to-char-output by cc-by-sa and MIT license