MySQL - Cómo seleccionar datos por longitud de cadena

302
SELECT * FROM table ORDER BY string_length(column);

¿Hay una función MySQL para hacer esto (por supuesto en lugar de string_length)?

Galón
fuente

Respuestas:

492

Está buscando CHAR_LENGTH()obtener el número de caracteres en una cadena.

Para los conjuntos de caracteres de varios bytes LENGTH(), obtendrá la cantidad de bytes que ocupa la cadena, mientras CHAR_LENGTH()que devolverá la cantidad de caracteres.

hsz
fuente
139
En realidad, CHAR_LENGTH () debería ser una mejor opción. Para los conjuntos de caracteres de varios bytes, LENGTH () le dará el número de bytes que ocupa la cadena, mientras que CHAR_LENGTH () devolverá el número de caracteres.
András Szepesházi 01 de
44
seleccione LONGITUD ('Ö'); resultados 2 !! ¡La respuesta de András Szepesházi es la correcta!
fubo
Es correcto enviar un parámetro entero a CHAR_LENGTH, ya que si devuelvo el número de caracteres? , por ejemplo CHAR_LENGTH(12)return2
DarkFenix
81
select * from table order by length(column);

La documentación sobre la función length (), así como todas las demás funciones de cadena, está disponible aquí .

Kaleb Brasee
fuente
27

Echando un vistazo a la documentación de MySQL para las funciones de cadena, también podemos usar CHAR_LENGTH()y CHARACTER_LENGTH()también.

Nunca sin esperanza
fuente
3

La función que uso para encontrar la longitud de la cadena es la lengthsiguiente:

SELECT * FROM table ORDER BY length(column);
Rito
fuente
1

Usé estas oraciones para filtrar

SELECT table.field1, table.field2 FROM table WHERE length(field) > 10;

puede cambiar 10 por otro número que desee filtrar.

Jesús Sánchez
fuente
-2
select * from *tablename* where 1 having length(*fieldname*)=*fieldlength*

Ejemplo si desea seleccionar del cliente las entradas con un nombre más corto que 2 caracteres.

select * from customer where 1 **having length(name)<2**
Levi Maier
fuente