フロントエンドからそのようなリストを受け取った場合、同様の状況に対処するために、以下のような関数を使用します。次に、あなただけの代わりに、テーブルなどの文字列を返すために、このコードを使用することができます:あなたは、おそらく実際にはかかわらず、T-SQLコード以外に、電子メールの送信を行いたい
SELECT DISTINCT String FROM dbo.GetTableFromStringList(@recipients)
。
はここで機能だ:これは単純なTSQLの方法ではありませんように
CREATE FUNCTION [dbo].[GetTableFromStringList]
(
@StringList VARCHAR(1000),
@Delimiter CHAR(1) = ','
)
RETURNS @Results TABLE
(
String VARCHAR(1000) NOT NULL
)
AS
BEGIN
DECLARE
@string VARCHAR(1000),
@position SMALLINT
SET @StringList = LTRIM(RTRIM(@StringList)) + @Delimiter
SET @position = CHARINDEX(@Delimiter, @StringList)
WHILE (@position > 0)
BEGIN
SET @string = LTRIM(RTRIM(LEFT(@StringList, @position - 1)))
IF (@string <> '')
BEGIN
INSERT INTO @Results (String) VALUES (@string)
END
SET @StringList = RIGHT(@StringList, LEN(@StringList) - @position)
SET @position = CHARINDEX(@Delimiter, @StringList, 1)
END
RETURN
END
あなたの提案が見えます。この関数は2つのパラメータを受け取ります。一つは受信者、もう一つは ';'のような区切り文字です。デフォルトで。そうですか? –
デリミタは、好きなものをデフォルトにすることができます。 「単純なT-SQL方法」 - 関数はT-SQLのビルトイン部分であり、SQL Server 2005以降、テーブル値関数が使用されています。 –
@David Chu:Sql Serverには単純な方法はありません。 –