当前位置: 首页 > 面试题库 >

SQL:如何从一个整数获取剩余的3个数字

吴山
2023-03-14
问题内容

我想从整数中检索要存储在表中的左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'

但这始终是一个近似值-如果您有一个非常非常大的数字…该怎么办呢?



 类似资料:
  • 问题内容: 我一直在搜索有关此主题的信息,但仍然听不懂,如果有人可以详细说明,我将非常感激。 我的任务是将两个变量除以整数除以余数。问题是,我不知道余数是什么,现在我做了类似的事情,这是通过互联网搜索得到的: 如果我例如设置(a = 43)和(b = 67) 然后我会得到这个结果: 现在,由于我不知道其余的是什么(这只是来自互联网的建议),所以我不知道这是否是正确的答案。 谢谢你的帮助, 亲切的问

  • 问题内容: 我需要获取一个包含前N个正整数的结果集。是否可以仅使用标准SQL SELECT语句来获取它们(不提供任何计数表)? 如果不可能,是否有任何特定的MySQL方法来实现? 问题答案: 似乎您想要的是一个。 在中,没有表是不可能的。 大多数主要系统都提供了一种实现方法: 在: FROM dual CONNECT BY level <= 10 在: SELECT * FROM q 在: FRO

  • 问题内容: 我有两个表: 这是表1: 这是表2: 现在,我想从这些表中获取数据。在两个表中都相同。 我想拿 和其他表。 请帮我做到这一点。 问题答案: 我假设您在第二个表中有一个命名字段(您没有列出它): 您应该查看有关的MySQL手册,因为这是编写SQL查询的非常基本的部分。您也可以考虑为product_id字段添加索引,以使查询运行更快。

  • 问题内容: 我在main中调用了swap方法,但它没有任何改变。我究竟做错了什么? 我的代码产生 以正常的升序排列,我希望它交换第4个和第15个元素。 问题答案: 移动方法调用:- 在您的for循环之外。因为,如果您的循环运行次数,则不会影响阵列。 另外,您需要先初始化数组,然后才能实际交换元素。调用之前需要执行的操作。

  • 问题内容: 我正在使用当前系统时间在表中插入数据,例如 。因此,在获取数据时,我仅需要获取最后3个小时的数据。 以下链接对我没有帮助。因为此链接使用的是我没有的特定日期格式。 从SQLite获取根据过去小时的数据 这是我的查询,但似乎无法正常工作。 插入时时间戳只不过是当前系统时间。 请给我任何参考或提示。 问题答案: 您可以使用以下方法获取3小时的时间戳记 然后,您可以传递给查询。 或者您可以在

  • 应用于Box2D实体后: 我在尝试像许多游戏一样(比如涂鸦跳跃),一旦英雄身体从屏幕顶部到达一定距离,就停止移动,开始滚动舞台,这样我们就感觉英雄还在爬得更高。为此,我需要首先移动英雄,然后移动舞台。 如何才能正确实现这一点?知道吗?