我想从SQLite中的表中找到字符串的最大长度

ztigrdn8  于 2023-03-23  发布在  SQLite
关注(0)|答案(3)|浏览(187)
SELECT MAX(SELECT MAX(LENGTH(`name`)) count FROM `student_info` 
UNION SELECT MAX(LENGTH(`address`)) count FROM `student_info` 
UNION SELECT MAX(LENGTH(`class`)) count FROM `student_info` 
UNION SELECT MAX(LENGTH(`roll`)) count FROM `student_info` 
UNION SELECT MAX(LENGTH(`subject`)) count FROM `student_info`) 
FROM `student_info`

通过使用类似类型的查询,我想找到一个字符串的最大值,这样我就可以正确地管理表。
SQLite的正确查询是什么?

zaq34kh6

zaq34kh61#

您的查询大部分是正确的,只是做了如下的小改动

SELECT MAX(count) from (
  SELECT MAX(LENGTH(`name`)) count FROM `student_info` 
UNION SELECT MAX(LENGTH(`address`)) count FROM `student_info` 
UNION SELECT MAX(LENGTH(`class`)) count FROM `student_info` 
UNION SELECT MAX(LENGTH(`roll`)) count FROM `student_info` 
UNION SELECT MAX(LENGTH(`subject`)) count FROM `student_info`
) ;

Try Here

z8dt9xmd

z8dt9xmd2#

您可以使用联合限制方法:

SELECT name, field, field_length
FROM
(
    SELECT 'name' AS name, name AS field, LENGTH(name) AS field_length FROM student_info
    UNION ALL
    SELECT 'address', address, LENGTH(address) FROM student_info
    UNION ALL
    SELECT 'class', class, LENGTH(class) FROM student_info
    UNION ALL
    SELECT 'role', role, LENGTH(role) FROM student_info
    UNION ALL
    SELECT 'subject', subject, LENGTH(subject) FROM student_info
) t
ORDER BY field_length DESC
LIMIT 1;

上面的方法是形成一个包含两列的中间表,其中一列包含感兴趣的5列中的所有字符串,另一列包含它们的长度。然后我们使用限制查询来查找最大长度条目和列名。

scyqe7ek

scyqe7ek3#

不需要UNION
使用MAX() aggregate function获取每列的最大长度,然后使用MAX()标量函数获取最大值:

SELECT MAX(
         MAX(LENGTH(name)),
         MAX(LENGTH(address)), 
         MAX(LENGTH(class)), 
         MAX(LENGTH(roll)), 
         MAX(LENGTH(subject))
       ) AS max_count 
FROM student_info;

相关问题