Pergunta

Como faço para localizar o campo com o maior comprimento de uma coluna específica em uma tabela MySQL?

Foi útil?

Solução 2

Você pode usar o comando mysql COMPRIMENTO()

<?php 
$q = mysql_query("SELECT LENGTH(yourfield) AS fieldlength FROM yourtable ORDER BY fieldlength DESC LIMIT 1"); 
echo $longestfield = mysql_result($q,0); 
?>

Outras dicas

O MySQL tem um monte de funções de seqüência de caracteres você pode usar:

SELECT LENGTH(col) as my_len FROM my_table ORDER BY my_len DESC LIMIT 1

Mais funky versão (funciona):

SELECT MAX(LENGTH(col)) FROM my_table

Você pode querer considerar CHAR_LENGTH().Diferenças de documentação:

CHAR_LENGTH():Retornar o número de caracteres no argumento

LENGTH():Devolver o comprimento de uma seqüência de caracteres em bytes

Por exemplo, quando utilizar UTF-8 em sua coluna, essas funções retornam valores diferentes.

E note que o comprimento definido para uma string coluna (ex.: varchar) é, na verdade, o seu caráter de comprimento.

Deixe o nome da tabela a ser tbl1 e o nome da coluna a ser col1 em que você está tentando encontrar o maior valor de comprimento.

Abordagem 1:

select col1, length(col1) from tbl1 order by length(col1) desc limit 1

Isso irá retornar o valor e também o comprimento do valor.

A abordagem acima é melhor se a sua é apenas uma única linha ou você deseja recuperar somente uma linha que é ter a mais longa duração.No caso, são várias linhas que possuem maior comprimento e que você deseja recuperar todos eles, em seguida, a segunda Abordagem seria o melhor.

Abordagem 2:

select col1, comprimento(col1) a partir de tbl1 onde duração(col1) in (select max(comprimento(col1)) a partir de tbl1)

Isto irá devolver o valor e também o comprimento do valor de todas as linhas, que está tendo o maior valor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top