una tutorial studio sirve que para manager hacer descargar datos consultas como sqlite formatting numbers leading-zero

tutorial - sqlite pdf



¿Funciona SQLite para formatear números con ceros iniciales? (5)

Además de la respuesta directa a su pregunta de @ 9000, piense si los números de categoría, grupo y producto no deben almacenarse como texto.

Tengo una base de datos SQLite que tendrá que contener productos. Esos productos tienen un número de producto compuesto de formato fijo, que consta de categoría, grupo y número de producto (cccccc.gg.ppp). Cada vez que se inserta un nuevo producto, el nuevo número de producto debe construirse usando los números de categoría y grupo, seguido del número de producto más alto en ese grupo incrementado con uno.

Para ese fin, estaba pensando en almacenar los tres números en campos separados y usar una vista para ensamblar dinámicamente el número del producto. Para que eso funcione, necesitaría agregar ceros iniciales, ya que el formato del número de producto es fijo.

Sin embargo, parece que no puedo encontrar una función SQLite incorporada que me permita hacer esto ... :-(

Prefiero no escribir una función personalizada, ya que es posible que tengamos que compartir la base de datos con otros desarrolladores para que puedan leer los datos; y no tengo idea de qué plataforma o idioma van a utilizar.

Se puede hacer esto? ¿O tendremos que encontrar una solución diferente?


Desde 3.8.3 (2014) puedes usar printf como:

SELECT printf("%04d", product_number) AS product_number FROM table;

Cambia los 4 a los muchos dígitos que necesites. Esto devolvería 0001 para product_number 1.


Sé que esta es una vieja pregunta, pero la siguiente es más simple:

-- zero-pad to 4 digits: select substr(''0000''||3,-4);

substr no requiere una longitud si está seleccionando hasta el final.


select substr(''0000000000''||''1234'', length(''0000000000''||''1234'')-9, 10) funciona; sustituya ''1234'' por su número de producto, cualquier longitud <= 10.


Esto se puede lograr con un poco de magia usando la concatenación de cadenas y la función substr . Larga historia corta, esto es lo que quieres:

select substr(''0000000000''||''1234'', -10, 10)

Sigue una explicación.

Primero, sepa que el operador de concatenación de cadenas de SQLite es || .

Comenzaremos tomando una cadena que sea tan larga como el valor que queremos devolver. Por ejemplo, si desea devolver un número que siempre tenga 10 caracteres y dejarlo con 0 s si es más corto, comience con una cadena de diez 0 s. Para eso, concatenaremos el número que desea devolver. En nuestro ejemplo, eso es ''1234''. Hasta ahora, tenemos la parte que se ve así: ''0000000000''||''1234''

Luego, pasa todo eso a la función substr . Según la documentación , aquí está cómo funciona la función substr :

La función substr (X, Y, Z) devuelve una subcadena de la cadena de entrada X que comienza con el carácter en Y y que tiene una longitud de Z caracteres. ... Si Y es negativo, el primer carácter de la subcadena se encuentra contando desde la derecha en lugar de la izquierda.

Entonces, si desea que la cadena tenga 10 caracteres de longitud, pase -10 como parámetro Y (para comenzar a contar desde la derecha, 10 caracteres atrás) y pase 10 como parámetro Z (para tomar 10 caracteres en total).