232

sqlite テーブルに 3 つの列があります。

    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 に関して初心者です。

4

3 に答える 3

411

演算子は「連結」です。||オペランドの 2 つの文字列を結合します。

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"
于 2011-05-26T06:17:54.897 に答える
44

SQLite には、printfまさにそれを行う関数があります。

SELECT printf('%s-%.2d-%.4d', col1, col2, col3) FROM mytable
于 2014-09-01T20:22:27.523 に答える
18

@tofutimの回答にあと1行...連結行のカスタムフィールド名が必要な場合...

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

SQLite 3.8.8.3でテスト済み、ありがとう!

于 2015-04-09T03:15:51.577 に答える