【问题标题】:How I can get the first 3 digits in 123456 Numbers in sql?如何在 sql 中获取 123456 数字中的前 3 位数字?
【发布时间】:2012-06-05 10:15:08
【问题描述】:

我的 CDR 表中有一个名为 CallingParty 的字段,它包含如下数据:

CallingParty
------------
267672668788

我想选择每个数字的前 3 个数字,例如

CallingParty
------------
267

【问题讨论】:

标签: sql tsql sql-server-2000


【解决方案1】:

如果 CallingParty 是 int 类型:

SELECT CAST(LEFT(CallingParty, 3) AS INT)
From CDR

【讨论】:

  • 无需显式CASTLEFT(123456,3) 无论如何都会进行隐式转换。
  • 这不是我的意思!您的编辑已经破坏了您的答案,因为现在您有一个悬空的AS INT 我的意思是转换为varchar 作为LEFT 函数的输入。无论如何,有些人可能更喜欢显式演员,但我发现没有它更具可读性/噪音更小。
【解决方案2】:

SQL Server 有一个 Left() 函数,但它最适用于字符串。 (SQL 中的 varchar/char)

Select left(cast(267672668788 as varchar), 3)

【讨论】:

  • left 更易读,更不容易混淆,尤其是当一些系统从 0 开始,一些从 1 开始时。KISS
【解决方案3】:

使用这个查询:

SELECT SUBSTRING(CAST(CallingParty AS VARCHAR(50)), 1, 3) FROM [CDR]

【讨论】:

    【解决方案4】:

    如果数据长度不变,那么您始终可以除以 10 * 您拥有的位数

    SELECT FLOOR(267672668788 / 1000000000)
    =267
    

    【讨论】:

      【解决方案5】:

      试试这个:

      SELECT Substring(callingparty, 1, Length(callingparty) - 9) 
      FROM   cdr; 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-06
        • 1970-01-01
        • 2021-11-07
        • 2018-02-14
        • 2021-11-19
        • 1970-01-01
        相关资源
        最近更新 更多