SQL语句获取列最长字符串的长度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句获取列最长字符串的长度相关的知识,希望对你有一定的参考价值。

如何获取呢,有办法吗

参考技术A SELECT max(len(字段名)) as 字符串最大长度 FROM 表名

函数:len(string), 不包含尾随空格本回答被提问者采纳
参考技术B max(len(字段)) sqlserver
max(length(字段)) mysql

其他数据库看帮助文档

确定 DB2 文本字符串长度

【中文标题】确定 DB2 文本字符串长度【英文标题】:determine DB2 text string length 【发布时间】:2012-07-06 00:52:39 【问题描述】:

我正在尝试找出如何编写一个 SQL 语句来获取字符串不是 12 个字符长的字段。如果它们是 10 个字符,我只想获取字符串。

DB2 中有什么函数可以做到这一点?

我想它会是这样的,但我在上面找不到任何东西。select * from table where not length(fieldName, 12)

【问题讨论】:

等等 - 你想获取 特定 列('field')包含的数据长度为 10 个字符的 rows,还是你想要获取所有行的 unknown 列,其中列中的所有值(或列名)都是 10 个字符长? 我想从 id 号列中获取所有行。有些身份证号码长 10 位,有些是 9 位,有些是 12 位。除了 12 位数字之外,我想要所有的。 该列实际上是数字类型,还是您在 Id 中使用数字字符?如果它实际上是一个数字列,只需进行简单的数字比较。如果是包含数字的字符串,请不要有前导零... 这是一个文本字段。对不起。只是碰巧它们暂时都是数字的。但是,是的,该字段是文本类型。 嗯,一个(当前)只包含数字的自然键 id 字段文本是可以的 - 期望在某些时候您可能有其他字符。我只是不建议允许前导零,因为您的用户可能没有意识到它们的重要性。然而,在一般情况下,大卫的答案应该是可行的。 【参考方案1】:

来自类似问题DB2 - find and compare the lentgh of the value in a table field - 添加 RTRIM,因为 LENGTH 将返回列定义的长度。这应该是正确的:

select * from table where length(RTRIM(fieldName))=10

27.5.2019 更新:可能在较旧的 db2 版本上,LENGTH 函数返回列定义的长度。在 db2 10.5 上,我尝试了该函数,它返回数据长度,而不是列定义长度:

select fieldname
, length(fieldName) len_only
, length(RTRIM(fieldName)) len_rtrim
from (values (cast('1234567890  ' as varchar(30)) )) 
as tab(fieldName)

FIELDNAME                      LEN_ONLY    LEN_RTRIM
------------------------------ ----------- -----------
1234567890                              12          10

可以用这个词来测试一下:

where length(fieldName)!=length(rtrim(fieldName))

【讨论】:

这就是诀窍!它像 OP 要求的那样获取字符串的实际长度,而不是列的长度。 谢谢,很好的提示! 这是不正确的。它将返回字段长度,而不是字符长度【参考方案2】:

这将抓取长度为 10 个字符的字符串(在 fieldName 列中)的记录:

 select * from table where length(fieldName)=10

【讨论】:

还要检查这个:ibm.com/developerworks/data/library/techarticle/dm-0705nair - 有时确定字符串长度可能很棘手。【参考方案3】:

我们主要写下面的语句 select * from table where length(ltrim(rtrim(field)))=10;

【讨论】:

嗨,欢迎来到 ***!如果您在回答任何问题之前可以read these guidelines,那就太好了。谢谢。 以上是公认的答案不正确。这对我有用

以上是关于SQL语句获取列最长字符串的长度的主要内容,如果未能解决你的问题,请参考以下文章

怎样用sql语句获取某个字段的长度

能否用sql语句向数据库表的某个字段存入字符串?

SQL语句如何增加列?

如何在sqlserver中获取表的所有列信息

68sql语句

sql server哪个字段类型可以保存最长文字