繁体   English   中英

在SQL Server中将字符串与列进行比较,并返回一个值

[英]Compare String to Column in SQL Server, and Return a value

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

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 ,并返回真或假的每一行。

我已经有一个存储过程dbo.GetComments ,可以通过TestComments表中名为SummaryID的标识符来查找匹配TestComments

  1. 我的最终目标是要能够创建一个Select语句与三列数据: SummaryIDComments ,以及相应的@Flag在所有行值TestComments 此语法是否可以创建所需的语法,以及如何将@MainString设置为所需的值?

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

当且仅当它上升到该级别所属的可重用性和令人垂涎的状态时,才将其设置为proc / fnc。 如果您不知道区别,那么答案是否定的。 这很可能是胡言乱语,不值得得到这种地位,除非您想要一种疯狂地朝着不可避免的脸庞轻抚的系统

这是存储过程的版本:

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

例如,您可以创建一个返回bit的标量函数。 它是这样完成的:

select SummaryID, Comments, dbo.FunctionName(Comments, @searchString)  
from TestComments

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM