SQLクエリで、異なる列の2つの文字列値が用語を共有しているかどうかを確認する簡単な方法はありますか?2つの文字列に共通の用語が含まれているかどうかを返すSQLクエリ
例えば:
Str1 = "little brown fox" Str2 = "big brown bear" Return_Value = 1
Str1 = "Sun is shinning" Str2 = "Its raining" Return_Value = 0
SQLクエリで、異なる列の2つの文字列値が用語を共有しているかどうかを確認する簡単な方法はありますか?2つの文字列に共通の用語が含まれているかどうかを返すSQLクエリ
例えば:
Str1 = "little brown fox" Str2 = "big brown bear" Return_Value = 1
Str1 = "Sun is shinning" Str2 = "Its raining" Return_Value = 0
これはおそらく最良のユーザー機能ではありませんが、これは必要なもののパスを下げるのに役立ちます。
CREATE FUNCTION [dbo].[ContainsSharedTerm]
(@SearchString1 varchar(255), @SearchString2 varchar(255))
RETURNS BIT
AS
BEGIN
DECLARE @MatchFound BIT
SET @MatchFound = 0
DECLARE @TempString VARCHAR(255)
WHILE LEN(@SearchString1) > 0 AND @MatchFound = 0
BEGIN
IF CHARINDEX(' ',@SearchString1) = 0
BEGIN
SET @TempString = @SearchString1
SET @SearchString1 = ''
END
ELSE
BEGIN
SET @TempString = LEFT(@SearchString1,CHARINDEX(' ',@SearchString1)-1)
SET @SearchString1 = RIGHT(@SearchString1,LEN(@SearchString1)-CHARINDEX(' ',@SearchString1))
END
IF CHARINDEX(@TempString,@SearchString2) > 0
BEGIN
SET @MatchFound = 1
END
END
RETURN @MatchFound
END
CREATE TABLE #TestTable (
Col1 VARCHAR(100),
Col2 VARCHAR(100)
)
INSERT INTO [#TestTable] ([Col1],[Col2]) VALUES ('little brown fox','big brown bear')
INSERT INTO [#TestTable] ([Col1],[Col2]) VALUES ('Sun is shinning','Its raining')
SELECT [Col1],[Col2],dbo.[ContainsSharedTerm]([Col1],[Col2]) AS [Match]
FROM [#TestTable]
DROP TABLE [#TestTable]
これをDBに追加する方法を考えたら、うまくいった、ありがとう! – Berry
あなたが比較されている文字列にいくつかの変更をしなければならないかもしれませんが、私は機能
例CONTAINSを見てお勧めします:
WHERE
CONTAINS('little brown fox', 'big OR brown OR bear') OR
CONTAINS('Sun is shinning', 'Its OR raining')
ますここにCONTAINSの詳細を読むことができます:
あなたのDBMSを指定していないが、PostgreSQLではこのでしょう。このような何か:
select count(*) from (
select unnest(string_to_array('little brown fox', ' '))
intersect
select unnest(string_to_array('big brown bear', ' '))
) t
ので1上記の例のためにと0のために両方の文字列(間で一致した単語の数を返します。あなたの2番目の例)
どのバージョンのSQLですか? – LittleBobbyTables
MS SQL Server 2008 R2を使用するとわかりません – Berry
ストアドプロシージャを作成して、ある行からデータを取得し、空白文字で分割してから別の行にLIKEを実行できます。 – Andre