【发布时间】:2020-07-08 22:35:23
【问题描述】:
我已经使用 SQL Server 中的函数很长时间了。这些函数可以在FROM 子句中使用,并且可以指定WHERE 子句。
在 SQL Server 中,WHERE 子句用于函数本身。与 Oracle 不同,WHERE 子句在函数产生结果后应用。
如果没有WHERE 的函数返回许多结果,则区别很重要。
此外,在 SQL Server 中,如果 WHERE 应用于具有索引的列,则使用函数内部的索引。
例子:
CREATE TABLE table_test (
col1 varchar(50),
col2 varchar(50)
)
--INSERT TEST DATA
Declare @Id int
Set @Id = 1
While @Id <= 1000000
Begin
Insert Into table_test values ('col1' + CAST(@Id as nvarchar(10)), 'col2' + CAST(@Id as nvarchar(10)))
Set @Id = @Id + 1
End
CREATE FUNCTION func_test() RETURNS TABLE
AS
RETURN
(
SELECT * FROM table_test
)
GO
CREATE NONCLUSTERED INDEX ixd_test ON table_test (col1) INCLUDE (col2)
SELECT * FROM func_test() WHERE col1 like 'col132%'
Oracle中有类似的函数吗?
【问题讨论】:
-
不确定索引部分,但您可以使用 Oracle 中的对象类型定义来获得类似的结果
标签: sql-server oracle