In
だけではない文字列の文字を、値のセットで動作します。あなたの質問に技術的に答えるには、3つの値 'aaa'、 'bbb' & 'ccc'を表す一連の値を作成し、それら3つの値をテーブル(Temp TableまたはTable (SQL Serverの)変数、その後、テーブルに対する値のセット(抗して実行しますが、この値のセットを保持するために、空の一時テーブルまたはテーブル変数を作成する必要がありますセットを作成するには
declare @Vals table (value varchar(20))
insert @vals(Value) Values('aaa')
insert @vals(Value) Values('bbb')
insert @vals(Value) Values('ccc')
select * from SomeOtherTable
Where SomeColumn IN (Select value from @vals)
コンマで区切られた文字列を個々の値に解析し、それらの個々の値を一時テーブルまたはテーブル変数に入力します。
SQL Serverを使用している場合、SQL Server ER区切られた文字列を解析し、各delimted値ごとに1行を持つテーブルを返します定義関数(UDF):あなたはUDFを作成する場合は、次のよう
は、その後、あなたがそれを使用します。
select * from SomeOtherTable
Where SomeColumn IN
(Select sVal from
dbo.ParseSTring(@communityDesc, ','))
/****** Object: UserDefinedFunction [dbo].[ParseString]
Script Date: 4/8/2016 1:53:00 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[ParseString] (@S Text, @delim VarChar(5))
Returns @tOut Table
(ValNum Integer Identity Primary Key,
sVal VarChar(8000))
As
Begin
Declare @dLLen TinyInt -- Length of delimiter
Declare @sWin VarChar(8000)-- Will Contain Window into text string
Declare @wLen Integer -- Length of Window
Declare @wLast TinyInt -- Boolean to indicate processing Last Window
Declare @wPos Integer -- Start Position of Window within Text String
Declare @sVal VarChar(8000)-- String Data to insert into output Table
Declare @BtchSiz Integer -- Maximum Size of Window
Set @BtchSiz = 7900 -- (Reset to smaller values to test routine)
Declare @dPos Integer -- Position within Window of next Delimiter
Declare @Strt Integer -- Start Position of each data value in Window
-- --------------------------------------------------------------
-- ---------------------------
If @delim is Null Set @delim = '|'
If DataLength(@S) = 0 Or
Substring(@S, 1, @BtchSiz) = @delim Return
-- ---------------------------
Select @dLLen = Len(@delim),
@Strt = 1, @wPos = 1,
@sWin = Substring(@S, 1, @BtchSiz)
Select @wLen = Len(@sWin),
@wLast = Case When Len(@sWin) = @BtchSiz
Then 0 Else 1 End,
@dPos = CharIndex(@delim, @sWin, @Strt)
-- ----------------------------
While @Strt <= @wLen
Begin
If @dPos = 0 Begin -- No More delimiters in window
If @wLast = 1 Set @dPos = @wLen + 1
Else Begin
Set @wPos = @wPos + @Strt - 1
Set @sWin = Substring(@S, @wPos, @BtchSiz)
-- -------------------------------------
Select @wLen = Len(@sWin), @Strt = 1,
@wLast = Case When Len(@sWin) = @BtchSiz
Then 0 Else 1 End,
@dPos = CharIndex(@delim, @sWin, 1)
If @dPos = 0 Set @dPos = @wLen + 1
End
End
-- -------------------------------
Set @sVal = LTrim(Substring(@sWin, @Strt, @dPos - @Strt))
Insert @tOut (sVal) Values (@sVal)
-- -------------------------------
-- Move @Strt to char after last delimiter
Set @Strt = @dPos + @dLLen
Set @dPos = CharIndex(@delim, @sWin, @Strt)
End
Return
End
これをSQLで実行しているのですか、または[テーブル値のパラメータ](https://msdn.microsoft.com/en-us/library/bb675163.aspx)を追加して複製しようとしていますか? –
どのDBMSを使用していますか? –
** [SQL IN句をパラメータ化する](http://stackoverflow.com/questions/337704/parameterize-an-sql-in-clause)** – lad2025