2011-05-21 375 views
47

Tengo una columna SQL donde las entradas son cadenas. Necesito escupir esas entradas después de recortar los dos últimos caracteres, p. si la entrada es 199902345 debe dar salida a 1999023.Eliminar los últimos dos caracteres de una columna en MySQL

Intenté investigar en TRIM pero parece que ofrece recorte solo si sabemos cuáles son los dos últimos caracteres. Pero en mi caso, no sé cuáles son esos dos últimos números y solo necesitan ser descartados.

Así que, en resumen, ¿qué operación de cadena de MySQL permite recortar los dos últimos caracteres de una cadena?

Debo agregar que la longitud de la cadena no es fija. Podría ser de 9 caracteres, 11 caracteres o lo que sea.

+0

¿Cuál es el tipo de datos de la columna? INT o VARCHAR. INT permitirá cálculos más rápidos. –

+0

@Salman es VARCHAR (como también tenemos Chars en nuestra implementación) –

+1

OK, entonces 'SUBSTRING' parece apropiado. Para el tipo de datos INT, era tan fácil como dividir por 100. –

Respuesta

92

Utilice la función de MySQL SUBSTRING para extraer parte de una cadena. Use la función CHAR_LENGTH para calcular el número de caracteres en la cadena.

SELECT 
    col, 
    /* ANSI Syntax */ SUBSTRING(col FROM 1 FOR CHAR_LENGTH(col) - 2) AS col_trimmed, 
    /* MySQL Syntax */ SUBSTRING(col,  1, CHAR_LENGTH(col) - 2) AS col_trimmed 
FROM tbl 
0

Se puede utilizar un LENGTH(that_string) menos el number of characters que desea eliminar en el SUBSTRING() seleccione quizá o utilizar la función TRIM().

+0

Si puede mostrar un ejemplo de 'TRIM()' trabajando para todos los caracteres por índice en lugar de eliminar todo un cierto tipo de caracteres, estaría interesado en verlo. – ebyrob

23

¿Por qué no utilizar la función IZQUIERDA (cadena, longitud) en lugar de la subcadena?

LEFT(col,length(col)-2) 

se puede visitar aquí https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_left saber más sobre funciones de MySQL de Cuerda.

+0

Si bien la respuesta aceptada es correcta, prefiero esta respuesta. Leí un poco de discusión acerca de IZQUIERDA() siendo un poco más eficiente que SUBSTRING() pero no puedo encontrar un enlace ahora mismo. Sería genial si pudiera agregar un enlace a la documentación de mysql para la función IZQUIERDA. – anuragw

+0

edité mi respuesta y puse el enlace. – Larz

+0

Solución mucho mejor que SUBSTRING() –

Cuestiones relacionadas