SQL:如何从 int 中获取剩下的 3 个数字

标签 sql sql-server ms-access

我想从要存储在表中的整数中检索剩下的 3 个数字。例如,如果int是1234567,我想检索123。我希望第二个数字(123)也是一个int;我不想将任何内容转换为字符串。

(是的,我确实应该使用字符串。但我无法控制问题的这方面。)

谢谢!

最佳答案

对于 SQL Server,最简单方法肯定是:

SELECT CAST(LEFT(CAST(YourInt AS VARCHAR(100)), 3) AS INT)

转换为字符串,获取最左边的三个字符,然后将它们转换回 INT。

纯粹根据数值进行操作会变得困惑,因为您需要知道需要删除多少位数字等等......

如果你想纯粹只使用 INT,你必须构造这样的东西(至少你可以在 SQL Server 中这样做 - 我对 Access 不太熟悉,不知道这是否可以在 Access 中使用) SQL“方言”):

DECLARE @MyInt INT = 1234567

SELECT
    CASE 
        WHEN @MyInt < 1000 THEN @MyInt
        WHEN @MyInt > 10000000 THEN @MyInt / 100000
        WHEN @MyInt > 1000000 THEN @MyInt / 10000
        WHEN @MyInt > 100000 THEN @MyInt / 1000
        WHEN @MyInt > 10000 THEN @MyInt / 100
        WHEN @MyInt > 1000 THEN @MyInt / 10
    END AS 'NewInt'

但这始终是一个近似值 - 如果你有一个非常非常大的数字怎么办......它可能会被遗漏......

关于SQL:如何从 int 中获取剩下的 3 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640048/

相关文章:

SQL:从表中获取最新的(未)订阅操作

c# - Access 数据库 C#

python - 计算由时间间隙分隔的连续每小时记录 block 的平均值

sql - 跨多个可能的 ID 匹配记录

sql - 使用 ORDER BY 子句查询 View 时出现 Oracle 内部错误

SQL Server Pivot 用于计算连接表中的实例

python - 在 ubuntu 中读取带有 pyodbc 错误的 Access 文件 (mdb)

sql - 选择具有最新日期的帐号

MYSQL - 没有结果时如何显示 0?

sql-server - 无法创建 SQL Server Express 登录 - 用户登录失败