sql - 如何创建SQL Server函数以返回int?

标签 sql sql-server tsql sql-function

我正在尝试创建一个SQL函数,以测试参数是否以某个特定术语开头或包含该术语,但不以该术语开头。

基本上,如果参数以术语开头,则函数返回0。否则,返回1。

这是我拥有的功能的核心,我正尝试将其与我发现的另一个功能相适应:

CREATE FUNCTION [dbo].[fnGetRelevance] 
(   
    @fieldName nvarchar(50),
    @searchTerm nvarchar(50)
)

RETURNS @value int -- this is showing an error, it seems to expect table but all I want is an int
(
    -- does this need to be here? If so, what should it be?
)

AS

BEGIN

    declare @field TABLE(Data nvarchar(50))

    insert into @field
        select Data from @fieldName

    if (Data like @searchTerm + '%') -- starts with
    begin       
        return 0
    end
    else if (Data like '%' + @searchTerm + '%' and Data not like @searchTerm + '%') -- contains, but doesn't start with 
    begin       
        return 1
    end

END

GO

最佳答案

您无需为返回值提供变量名,只需提供其类型即可,并且不需要括号。

CREATE FUNCTION [dbo].[fnGetRelevance] 
(   
    @fieldName nvarchar(50),
    @searchTerm nvarchar(50)
)

RETURNS int
AS
....

还;
select Data from @fieldName

将不起作用,您需要dynamic SQL从名称在变量中的对象中选择。

关于sql - 如何创建SQL Server函数以返回int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264438/

相关文章:

sql - 如何将 BINARY(8000) 列转换为 VARBINARY(MAX)

sql - Microsoft Access 中可用于 "CREATE TABLE"的字段类型

带有 Union All 的 View 中的 MySQL Case 语句

mysql - 强制唯一性并定义多个表的外键约束

sql-server - SQL Server 内部级联更新/删除如何工作?

sql-server - SQL转换日期时间并减去小时

sql - CHECK 约束可以像 if else 一样起作用吗?

mysql - 如何选择列中的某些数据并将其与其他列进行比较

c# - 适用于 EF Core 时强制 SUM 方法返回 NULL

sql - 调用存储过程时,T-SQL 动态转换参数