計算列
計算列可用於選擇列表、WHERE 子句、ORDER BY 子句或任何可使用正規表示式的其他位置,但下列情況除外:
計算列不能用作 DEFAULT 或 FOREIGN KEY 約束定義,也不能與 NOT NULL 約 束定義一起使用。但是,如果計算列的值由具有確定性的表示式定義,並且索引列中允許計算結果的資料型別,則可將該列用作索引中的鍵列,或用作 PRIMARY KEY 或 UNIQUE 約束的一部分。
例如,如果表中含有整數列 a 和 b,則可以對計算列 a+b 建立索引,但不能對計算列 a+DATEPART(dd, GETDATE()) 建立索引,因為在以後的呼叫中,其值可能發生改變。
計算列不能作為 INSERT 或 UPDATE 語句的目標。
表中計算列所使用的列值因行而異,因此計算列的每一行可能有不同的值。
只有同時指定了 PERSISTED 時,才能為計算列指定 NOT NULL。
計算列上的 CHECK 約束也必須標記為 PERSISTED。
計算列上的外來鍵也必須標記為 PERSISTED。
計算列的為 Null 性是由資料庫引擎根據使用的表示式自動確定的。即使只有不可為空的列,大多數表示式的結果也認為是可為空的,因為可能的下溢或溢位也將生成 NULL 結果。使用帶 AllowsNull 屬性的 COLUMNPROPERTY 函式可查明表中任何計算列的為 Null 性。透過與 check_expression 常量一起指定 ISNULL(其中,常量是替換所有 NULL 結果的非空值),可以將可為空的表示式轉換為不可為空的表示式。對於基於公共語言執行時 (CLR) 使用者定義型別表示式的計算列,需要對此型別有 REFERENCES 許可權。(當前其實對這段話我不是很懂)
eg1:
create table dbo.test
(
co11 int ,
col2 as (co11+col3),
col3 int
)
插入資料時可以視不存在計算列
insert into dbo.test
select 1,1
select * from dbo.test
co11 col2 col3
1 2 1
eg2:
create function dbo.f_getvalue(@intValue int)
returns float
as
begin
return (@intValue +3) * 0.5 % 12 + 3 *12/0.6
end
create table dbo.test
(
co11 int ,
col2 as f_getvalue(co11),
col3 int
)
執行提示錯誤:
Msg 195, Level 15, State 10, Line 4
'f_getvalue' is not a recognized built-in function name.
知道原因了,如果改成以下的情況就可以了
create table dbo.testcomputecolumn ( co11 int , col2 as dbo.f_getvalue(co11), col3 int ) |
這樣就可以成功,為什麼呢?我網上看到別人是這麼說的,我覺得是對的:
SQL Server scalar user defined functions must be called using 2 part
names. You will see this error if you attempt to call the functions
using a 1 part name. So if your function name is "function1" and is defined in the dbo schema, then instead of "select function1()" you should call it as "select dbo.function1()" |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27026361/viewspace-766080/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- numpy——陣列的計算陣列
- 二維陣列的計算陣列
- bc : 一個命令列計算器命令列
- 18:等差數列末項計算
- 磁碟陣列可靠度的計算陣列
- 計算兩列的相關性
- PHP陣列學習之計算陣列元素總和PHP陣列
- 自定義命令列計算工具:AYBO for Mac命令列Mac
- 工具bc:一個命令列計算器命令列
- Python科學計算之Numpy陣列生成與運算Python陣列
- c語言中計算陣列長度的方法C語言陣列
- 雲端計算之路-出海記:命令列下的 AWS命令列
- 計算兩個一維陣列的卷積陣列卷積
- C語言如何計算陣列的長度C語言陣列
- python numpy基礎 陣列和向量計算Python陣列
- pb9 資料視窗的計算列
- 行轉列計算差值的一種優化優化
- 斐波那契數列的分治法計算
- 使用CREATETABLE語句宣告一個計算列(轉)
- 自學C 四月十九日_陣列計算陣列
- 計算斐波那契數列的演算法演算法
- 陣列操作,計算組元素的極值函式陣列函式
- 用VBA計算EXCEL中的行數和列數Excel
- Excel中實現當手動輸入A列和B列的值時,C列自動計算A列和B列的和Excel
- sizeof 和 strlen 計算陣列大小和長度詳解陣列
- C/C++ 陣列連結串列表示式計算C++陣列
- js計算斐波那契數列程式碼例項JS
- 使用AWK計算某一列的所有數值和
- 本地計算、雲端計算、霧計算、邊緣計算有什麼區別?
- 雲端計算,網格計算,分散式計算,叢集計算的區別?分散式
- element table只計算最後一列資料總和
- python:numpy陣列運算、排序、統計、隨機數生成Python陣列排序隨機
- 計算陣列中每個數字出現的次數陣列
- 計算DataGrid中的模版列的結果,使用javascript.JavaScript
- 陣列的位移運算陣列
- 佇列 手算到機算 入門 佇列 迴圈佇列佇列
- 邊緣計算、霧計算、雲端計算區別幾何?
- 邊緣計算與雲端計算