2010-08-12 30 views

Respuesta

68

SELECT LEFT(field1,LOCATE(' ',field1) - 1)

Tenga en cuenta que si la cadena en cuestión no contiene espacios, esto devolverá una cadena vacía.

+6

+1 no sabía acerca de 'LEFT' – soulmerge

+4

Devuelve 'chara' con el espacio final. Necesita disminuir el resultado de LOCATE si no necesita separador al final: SELECCIONAR IZQUIERDA (campo1, LOCALIZAR ('', campo1) - 1) – Enyby

+0

Esto no funcionará si su campo principal no contiene espacio. Subcadena devolverá el valor vacío en lugar de devolver la cadena completa. P. ej. si mi campo contiene la cadena "test-possible-incorrect-name", la subcadena no devolverá nada en lugar de "test-possible-incorrect-name". –

10

Necesitará un string operations para eso. Suponiendo que cada campo tiene al menos un carácter de espacio:

SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table; 

enfoque seguro:

SELECT IF(
    LOCATE(' ', field1), 
    SUBSTR(field1, 0, LOCATE(' ', field1)), 
    field1 
) FROM your_table; 
+0

+1 para la versión segura, aunque no está claro qué resultado se debe devolver cuando el campo no contiene un espacio en blanco. – Mchl

+1

tuvo que cambiar 0 por 1: 'SELECT SUBSTR (field1, 1, LOCATE ('', field1)) FROM your_table;' –

45

A continuación se muestra otro método que funciona y puede parecer un poco más simple para algunos. Utiliza el SUBSTRING_INDEX MySQL function. A 1 devuelve todo antes del primer espacio, y un -1 devuelve todo después del último espacio.

Esto devuelve 'chara':

SELECT SUBSTRING_INDEX(field1, ' ', 1) 

'tros' Devuelve:

SELECT SUBSTRING_INDEX(field1, ' ', -1) 

detalles

Un valor positivo buscará su carácter especificado desde el inicio de la cadena, y un valor negativo comenzará desde el final de la cadena. El valor del número indica la cantidad de su personaje especificado que debe buscar antes de devolver la pieza restante de la cadena. Si el personaje que está buscando no existe, se devolverá todo el valor del campo.

En este caso, un -2 devolvería todo a la derecha del penúltimo espacio, que no existe en este ejemplo, por lo que se devolverá todo el valor del campo.

+2

Esto también funciona, si hay cadenas, sin un espacio en blanco, por ejemplo 'chara' también funcionará. – bernhardh

+2

Esto funcionó muy bien al obtener la versión principal + secundaria de una cadena de versión con componentes x.y.z. – thomthom

+2

Esto funciona mejor cuando desea que se devuelva todo el campo si no se pudo encontrar el carácter. – stephentgrammer

Cuestiones relacionadas