SQL Server SQL語句中的函式呼叫與Oracle SQL語句函式呼叫一個有趣的差別
create table t1(col numeric)
declare @i int = 0
while @i <= 100
begin
set @i = @i + 1
insert into t1(col) values(@i)
end
執行以上指令碼,向t1表中插入了從1到100的100行記錄
寫了如下的SQL
select COL, RAND() from t1 order by RAND();
本來期望能打亂查詢的結果,但從結果來看,rand()函式值在查詢中被呼叫了一次,而不是我所期望的100次(因為有100行)。這樣的話不能達到結果
newid可以達到結果。
如果是Oracle,函式應是以行為單位執行的:
declare @i int = 0
while @i <= 100
begin
set @i = @i + 1
insert into t1(col) values(@i)
end
執行以上指令碼,向t1表中插入了從1到100的100行記錄
寫了如下的SQL
select COL, RAND() from t1 order by RAND();
本來期望能打亂查詢的結果,但從結果來看,rand()函式值在查詢中被呼叫了一次,而不是我所期望的100次(因為有100行)。這樣的話不能達到結果
newid可以達到結果。
如果是Oracle,函式應是以行為單位執行的:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-1061833/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Oracle]高效的SQL語句之分析函式(一)(二)OracleSQL函式
- 避免SQL中的函式呼叫SQL函式
- [Oracle]高效的SQL語句之分析函式(三)OracleSQL函式
- 【SQL】Oracle sql語句 minus函式執行效率與join對比SQLOracle函式
- sql語句之分組,聚合函式SQL函式
- SQL語句中聚合函式忽略NULL值的總結SQL函式Null
- SQL語言運算子與函式SQL函式
- [Oracle]高效的SQL語句之分析函式(四)--lag()/lead()OracleSQL函式
- Oracle 迴圈呼叫動態SQL語句OracleSQL
- Oracle經典sql語句總結@sql-plus重點函式串講與sql語句案例@中文排序詳講).docOracleSQL函式排序
- 一個SQL Server中的FormatDatetime函式SQLServerORM函式
- Sql Server函式全解(一)字串函式SQLServer函式字串
- Oracle SQL 語句中正規表示式的應用OracleSQL
- 單據列表呼叫自定義SQL函式SQL函式
- Mysql與Sql Server DATEDIFF函式MySqlServer函式
- SQL中呼叫包含dbms_lock.sleep的函式SQL函式
- Sql Server 日期函式SQLServer函式
- SQL SERVER 字串函式SQLServer字串函式
- SQL語言基礎(函式)SQL函式
- SQL server 表值函式 標量值函式 區別SQLServer函式
- sql語句中#{}和${}的區別SQL
- 函式呼叫發生在SQL呼叫之前還是過程中函式SQL
- SQL Server 函式返回多個值SQLServer函式
- SQL Server常用函式整理SQLServer函式
- Sql Server系列:字串函式SQLServer字串函式
- Sql Server系列:聚合函式SQLServer函式
- Sql Server系列:排序函式SQLServer排序函式
- Sql server 分割符函式SQLServer函式
- SQL SERVER 數學函式SQLServer函式
- SQL SERVER 系統函式SQLServer函式
- SQL SERVER 自定義函式SQLServer函式
- SQL Server函式總結SQLServer函式
- SQL Server CONVERT() 函式SQLServer函式
- SQL語句與正規表示式SQL
- Sql Server函式全解(1):字串函式SQLServer函式字串
- PLSQL Language Reference-PL/SQL語言基礎-表示式-PL/SQL表示式中的SQL函式SQL函式
- C語言函式呼叫棧C語言函式
- sql語句中as的用法SQL