1. ホーム
  2. データベース
  3. エムエスエル

SQLSERVER 変数文字列を用いたスプライシング ケース詳細

2022-01-05 03:07:28

I. スプライス文字列(分割しない文字列全体)ステップ。

  1. まず文字列をシングルクォートで囲みます。
  2. の変数を文字列中の'''+@para+'''として入力します。
  3. 実行中に型変換エラーが発生した場合は、適切な型変換関数(cast()関数など)を適用して、変数を型変換します。

例1.

SQLスプライスされた文字列を含むストアドプロシージャ。

Create Procedure Test
 @TestID int
As
Declare @s nvarchar(800)
Set @s='Select * From dbo.Categories where CategoryID='''+cast(@TestID as varchar)+''''
print @s
exec(@s)


実行します。

exec Test @TestID=1

実行結果です。

2つ目は、文字列のスプライス(文字列分割)手順です。

  1. 変数を含まない文字列は、前後にシングルクォートで囲む
  2. 変数を含まない文字列を+でスプライスする。
  3. 変数に'''+@para+'''をつける。(@para は変数名)。
  4. プロシージャの実行時に型変換エラーが発生した場合、適切な型変換関数を用いて変換します。

例2.

SQL文字列を含むストアドプロシージャ。

Create Procedure Test
 @TestID int
As
Declare @s nvarchar(800)
Set @s='Select * From dbo.Categories where CategoryID='+''''+cast(@TestID as varchar)+''''

print @s
exec(@s)

実行します。

exec Test @TestID=1


実行結果です。

今回の記事は、SQLSERVERの変数文字列によるスプライシングについてです。SQLSERVERの可変文字列によるスプライシングについては、スクリプトハウスの過去記事を検索するか、引き続き以下の関連記事を閲覧してください。