比较SQL Server中的字符串与列,并返回一个值

时间:2015-06-11 16:04:43

标签: sql sql-server

我不确定是否应该为此创建一个视图,存储过程或函数,但这是我到目前为止所拥有的:

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的标识符找到匹配项。

  1. 我的最终目标是能够创建一个包含三列数据的Select语句:SummaryIDComments以及@Flag中所有行的相应TestComments值{1}}。这种语法是否能够创建我需要的内容,以及如何将@MainString设置为我想要的值?

  2. 是否应将其创建为存储过程,函数或视图? (我假设存储过程或功能)

3 个答案:

答案 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