【问题标题】:What would be the SQL query/command to find length of numeric field from a table?从表中查找数字字段长度的 SQL 查询/命令是什么?
【发布时间】:2015-12-16 06:38:34
【问题描述】:

我想知道如何在 sql 中找到数值字段的长度。命令/查询是什么,以便我们可以在表中找到特定字段的长度。

例如: 对于下表:

Column1 Column2
1          1111  
2            11
3         44444      
4            11
5           111

从上面的示例中,我想查看“column2”列中的记录/字段,其数字长度为“2”。

我应该执行什么查询来实现这一点?

【问题讨论】:

  • 我不明白你对数字长度的定义

标签: mysql sql sql-server database database-administration


【解决方案1】:

您还可以使用POWER 函数和<>= 来维护SARGability

WITH tbl (column1, column2) AS(
    SELECT 1, 1111 UNION ALL
    SELECT 2, 11 UNION ALL
    SELECT 3, 44444 UNION ALL
    SELECT 4, 11 UNION ALL
    SELECT 5, 111
)
SELECT *
FROM tbl
WHERE
    column2 < POWER(10, 2)
    AND column2 >= POWER(10, 1)

【讨论】:

  • 我相信这将包括10.2,它的长度不是 2,但对于给定的数据,这很好:)
【解决方案2】:

使用LEN函数

select * 
from table 
where len(column2) = 2

当您想要包含“0.2”或类似值之类的数据时,这将不起作用

【讨论】:

  • 感谢您的快速帮助:)
【解决方案3】:

你不能像here所说的那样

长度和数字都是特定基数(即字符串)中数字的物理表示的属性。

所以你必须先将数字字段转换为varchar/char,然后找到长度如下:

SQL 服务器:

select * 
from table 
where len(CONVERT (varchar(10), colunm2 )) = 2

MySQL:

select * 
from table 
where length(convert(column2,char)) = 2

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多