簡體   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