[string] sqlite에서 패딩으로 문자열을 연결하는 방법

sqlite 테이블에 세 개의 열이 있습니다.

    Column1    Column2    Column3
    A          1          1
    A          1          2
    A          12         2
    C          13         2
    B          11         2

선택해야합니다 Column1-Column2-Column3(예 🙂 A-01-0001. 각 열을 패드로 채우고 싶습니다.-

나는 SQLite와 관련하여 초보자이며 도움을 주시면 감사하겠습니다.



답변

||연산자 “CONCATENATE”- 그것은 함께 피연산자의 두 문자열을 결합한다.

에서 http://www.sqlite.org/lang_expr.html

패딩의 경우, 내가 사용한 것처럼 보이는 사기적인 방법은 대상 문자열로 시작하여 ‘0000’이라고 말하고 ‘0000423’을 연결 한 다음 ‘0423’에 대해 substr (result, -4, 4)하는 것입니다.

업데이트 : SQLite에 “lpad”또는 “rpad”의 기본 구현이없는 것처럼 보이지만 여기에서 기본적으로 제안한 내용을 따를 수 있습니다. http://verysimple.com/2010/01/12/sqlite-lpad -rpad 기능 /

-- the statement below is almost the same as
-- select lpad(mycolumn,'0',10) from mytable

select substr('0000000000' || mycolumn, -10, 10) from mytable

-- the statement below is almost the same as
-- select rpad(mycolumn,'0',10) from mytable

select substr(mycolumn || '0000000000', 1, 10) from mytable

그 모습은 다음과 같습니다.

SELECT col1 || '-' || substr('00'||col2, -2, 2) || '-' || substr('0000'||col3, -4, 4)

그것은 산출

"A-01-0001"
"A-01-0002"
"A-12-0002"
"C-13-0002"
"B-11-0002"


답변

SQLite에는printf 정확히 다음과 같은 기능 이 있습니다.

SELECT printf('%s-%.2d-%.4d', col1, col2, col3) FROM mytable


답변

@tofutim 답변에 한 줄만 더 … 연결 된 행에 대한 사용자 정의 필드 이름을 원하면 …

SELECT
  (
    col1 || '-' || SUBSTR('00' || col2, -2, 2) | '-' || SUBSTR('0000' || col3, -4, 4)
  ) AS my_column
FROM
  mytable;

SQLite 3.8.8.3 에서 테스트되었습니다 . 감사합니다!


답변