string - concatenate - Cómo concatenar cadenas con relleno en sqlite
sysdate sqlite (3)
Tengo tres columnas en una tabla sqlite:
Column1 Column2 Column3
A 1 1
A 1 2
A 12 2
C 13 2
B 11 2
Necesito seleccionar Column1-Column2-Column3
(por ejemplo, A-01-0001
). Quiero rellenar cada columna con un -
Soy un principiante con respecto a SQLite, cualquier ayuda sería apreciada
El
||
el operador es "concatenar" - une las dos cadenas de sus operandos.
Desde http://www.sqlite.org/lang_expr.html
Para el relleno, la forma aparentemente tramposa que he usado es comenzar con la cuerda objetivo, decir ''0000'', concatenar ''0000423'', luego substr (resultado, -4, 4) para ''0423''.
Actualización: Parece que no hay una implementación nativa de "lpad" o "rpad" en SQLite, pero puede seguir (básicamente, lo que propuse) aquí: http://verysimple.com/2010/01/12/sqlite-lpad-rpad-function/
-- 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
Así es como se ve:
SELECT col1 || ''-'' || substr(''00''||col2, -2, 2) || ''-'' || substr(''0000''||col3, -4, 4)
cede
"A-01-0001"
"A-01-0002"
"A-12-0002"
"C-13-0002"
"B-11-0002"
Solo una línea más para la respuesta de @tofutim ... si desea un nombre de campo personalizado para la fila concatenada ...
SELECT
(
col1 || ''-'' || SUBSTR(''00'' || col2, -2, 2) | ''-'' || SUBSTR(''0000'' || col3, -4, 4)
) AS my_column
FROM
mytable;
Probado en SQLite 3.8.8.3 , ¡Gracias!
SQLite tiene una función printf
que hace exactamente eso:
SELECT printf(''%s-%.2d-%.4d'', col1, col2, col3) FROM mytable