我不确定是否应该为此创建一个视图,存储过程或函数,但这是我到目前为止所拥有的:
USE [HomeStorageQA2]
GO
DECLARE @SearchValue Varchar(255)
DEClare @Flag Varchar(255)
SET @Flag = NULL
SET @SearchValue = 'Inner point(s) > outer point(s);'
Declare @MainString Varchar(255)
Set @MainString = dbo.GetComments
if Charindex(@SearchValue,@MainString) > 0
begin
Set @Flag = 'True'
end
Select 'Flag' = @Flag
go
如果我Set @MainString = [Some value containing SearchValue]
,则查询返回True
。
我想对TestComments.Comments
中的行使用此查询;所以它将Comments
的值与@SearchValue
进行比较,并为每一行返回True或False。
我已经有一个存储过程dbo.GetComments
通过SummaryID
表中名为TestComments
的标识符找到匹配项。
我的最终目标是能够创建一个包含三列数据的Select语句:SummaryID
,Comments
以及@Flag
中所有行的相应TestComments
值{1}}。这种语法是否能够创建我需要的内容,以及如何将@MainString
设置为我想要的值?
是否应将其创建为存储过程,函数或视图? (我假设存储过程或功能)
答案 0 :(得分:2)
当且仅当它上升到可重用性和令人垂涎的状态时才使它成为proc / fnc。如果你不知道差异,那么答案是否定的。它可能是随机的胡言乱语,不值得这样的地位,更少你想要一种疯狂的微不足道的系统face-palm
答案 1 :(得分:2)
这是一个存储过程版本:
CREATE PROCEDURE FindMatches
@searchValue varchar(MAX)
AS
BEGIN
SELECT SummaryID
, Comments
, CASE
WHEN CHARINDEX(@searchValue, Comments) > 0 THEN 'True'
ELSE 'False'
END AS Flag
FROM TestComments
END
答案 2 :(得分:1)
例如,您可以创建一个返回位的标量函数。它完成如下:
select SummaryID, Comments, dbo.FunctionName(Comments, @searchString)
from TestComments