Estoy trabajando en una consulta SQL que lee de una base de datos SQLServer para producir un archivo de extracción. Uno de los requisitos para eliminar los ceros iniciales de un campo en particular, que es un VARCHAR(10)
campo simple . Entonces, por ejemplo, si el campo contiene '00001A', la instrucción SELECT debe devolver los datos como '1A'.
¿Hay alguna forma en SQL de eliminar fácilmente los ceros iniciales de esta manera? Sé que hay una RTRIM
función, pero parece que solo quita espacios.
sql
sql-server
tsql
Tim C
fuente
fuente
Respuestas:
fuente
fuente
devuelve
N0Z
, es decir, eliminará los ceros iniciales y todo lo que venga antes de ellos.fuente
Tenía la misma necesidad y usé esto:
fuente
Si desea que la consulta devuelva un 0 en lugar de una cadena de ceros o cualquier otro valor, puede convertir esto en una declaración de caso como esta:
fuente
Puedes usar esto:
fuente
Puede probar esto; se necesita especial cuidado para eliminar solo los ceros iniciales si es necesario:
O simplemente puede llamar
fuente
Aquí está la función de valor escalar SQL que elimina los ceros iniciales de la cadena:
fuente
En caso de que desee eliminar los ceros iniciales de una cadena con un tamaño desconocido.
Puede considerar usar el comando STUFF.
Aquí hay un ejemplo de cómo funcionaría.
Vea en Fiddler varios escenarios que cubrirá.
https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=14c2dca84aa28f2a7a1fac59c9412d48
fuente
Eliminar el 0 a la izquierda de la declaración del mes siguiente definitivamente funcionará.
Simplemente reemplácelo
GETDATE()
con el campo de fecha de su tabla.fuente
puedes probar esto
SELECT REPLACE(columnname,'0','') FROM table
fuente
Para eliminar el 0 inicial , puede multiplicar la columna numérica con 1 Por ejemplo: Seleccione (ColumnName * 1)
fuente
Este es un script Sql que emula la funcionalidad del comando TRIM en tsql antes de 2017, es básicamente lo mismo que las otras recomendaciones, pero las otras se reemplazan con un único carácter poco común que aún puede ocurrir, '[Rtrim]' o '[ Ltrim] 'aún podría aparecer en el texto, pero reemplazar hat con un texto único, por ejemplo, un Guid resolvería ese problema.
no lo he probado con respecto a la velocidad
fuente
Tomé prestado de las ideas anteriores. Esto no es rápido ni elegante. pero es exacto.
CASO
FINAL
fuente
fuente
Esto debería bastar.
fuente
select trim(leading '0' from '001A');
, pero OP estaba solicitando SQL Server.