program story

mysql의 max (length (field))

inputbox 2020. 10. 7. 07:36
반응형

mysql의 max (length (field))


내가 말하면 :

select max(length(Name)) 
  from my_table

결과는 18이지만 관련 데이터도 원합니다. 그래서 내가 말하면 :

select max(length(Name)), 
       Name 
  from my_table

...작동하지 않습니다. 내가 알아낼 수없는 자기 조인이 있어야한다.

누구든지 나에게 단서를 줄 수 있습니까?


SELECT  name, LENGTH(name) AS mlen
FROM    mytable
ORDER BY
        mlen DESC
LIMIT 1

수정 됨, 알 수없는 max () 값에 대해 작동합니다.

select name, length( name )
from my_table
where length( name ) = ( select max( length( name ) ) from my_table );

좋아, 무엇을 사용하고 있는지 잘 모르겠지만 (MySQL, SLQ Server, Oracle, MS Access ..)하지만 아래 코드를 시도해 볼 수 있습니다. W3School 예제 DB에서 작동합니다. 여기에 이것을 시도하십시오 :

SELECT city, max(length(city)) FROM Customers;

사용하다:

  SELECT mt.name 
    FROM MY_TABLE mt
GROUP BY mt.name
  HAVING MAX(LENGTH(mt.name)) = 18

... 사전에 길이를 알고 있다고 가정합니다. 그렇지 않은 경우 다음을 사용하십시오.

  SELECT mt.name 
    FROM MY_TABLE mt
    JOIN (SELECT MAX(LENGTH(x.name) AS max_length
            FROM MY_TABLE x) y ON y.max_length = LENGTH(mt.name)

Select URColumnName From URTableName Where length(URColumnName ) IN 
(Select max(length(URColumnName)) From URTableName);

이것은 최대 길이를 가진 특정 열의 레코드를 제공합니다.


동일한 테이블에서 최대 및 최소가 모두 필요한 경우 :

    select * from (
(select city, length(city) as maxlen from station
order by maxlen desc limit 1)
union
(select city, length(city) as minlen from station
order by minlen,city limit 1))a;

select * 
from my_table 
where length( Name ) = ( 
      select max( length( Name ) ) 
      from my_table
      limit 1 
);

이것은 두 개의 테이블 스캔을 포함하므로 그리 빠르지 않을 수 있습니다!


다음과 같은 솔루션을 사용할 수 있다고 가정합니다.

select name, length(name)
from users
where id = (
    select id
    from users
    order by length(name) desc
    limit 1
);

하지만 최적의 솔루션은 아닐 수도 있지만 ... 작동하는 것 같습니다.


Use CHAR_LENGTH() instead-of LENGTH() as suggested in: MySQL - length() vs char_length()

SELECT name, CHAR_LENGTH(name) AS mlen FROM mytable ORDER BY mlen DESC LIMIT 1

참고URL : https://stackoverflow.com/questions/2357620/maxlengthfield-in-mysql

반응형