-1
根據Sql Server,任何計算列只有在確定性時才能被索引。 即,考慮列a,b和c是INT數據類型並且c = a + b。現在列C可以索引,但是當列a或b保持最大的整數值時,它會拋出算術錯誤,是否有解決方案?2個最大整數的索引計算列
謝謝。
根據Sql Server,任何計算列只有在確定性時才能被索引。 即,考慮列a,b和c是INT數據類型並且c = a + b。現在列C可以索引,但是當列a或b保持最大的整數值時,它會拋出算術錯誤,是否有解決方案?2個最大整數的索引計算列
謝謝。
create table TA (
ID int not null primary key,
a int not null,
b int not null,
c as a+b
)
go
create index IX_TA_c on TA (c)
go
insert into TA(ID,a,b) values (1,1,2147483647)
插入得到:
Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type int.
The statement has been terminated.
如果你想計算總是工作,使列中的至少一個被強制爲bigint
(等等數學和更改計算的c
產生的類型都是bigint
也):
c as CAST(a as bigint)+b
這看起來可能自己用5分鐘的努力來回答問題的類型。 –
或者,鑑於我的評論是2分鐘的時間,並且我在打開查詢窗口之前發佈了它並寫下了我的答案,可能5分鐘是一個很高的估計。 –
我試過並得到這個算術溢出錯誤。但有興趣知道任何解決方案。可能是問題的最後一行是錯誤的。 – lollol