dmr*_*dmr 6 sql sql-server ms-access
我想从整数中检索左3个数字以存储在表格中.例如,如果int是1234567,我想检索123.我希望第二个数字(123)也是一个int; 我不想将任何东西转换为字符串.
(是的,我真的应该使用字符串.但我无法控制问题的这一方面.)
谢谢!
mar*_*c_s 14
对于SQL Server,最简单的方法肯定是:
SELECT CAST(LEFT(CAST(YourInt AS VARCHAR(100)), 3) AS INT)
Run Code Online (Sandbox Code Playgroud)
转换为字符串,取最左边的三个字符,然后将它们转换回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'
Run Code Online (Sandbox Code Playgroud)
但这总是一个近似 - 如果你真的有一个真正非常大的数字......它可能只是陷入困境....