我想从整数中检索要存储在表中的左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'
但这始终是一个近似值-如果您有一个非常非常大的数字…该怎么办呢?