プロが教えるわが家の防犯対策術!

現在Access2003とSQLServer2005ExpressEditonで勉強中の者です。
ストアドプロシージャを動的に作成したいと思い
以下のページを参考に、NorthwindCS.adpはダウンロードせず
自前で簡単に環境を作ってストアドプロシージャをつくりテストに成功しました。
http://support.microsoft.com/kb/286828/ja

そこで「もし検索対象のテーブルに摘要欄があり、"未"を含む検索をしたい場合はどうすればよいか」と思い、摘要フィールド(Varchar)を作成してストアドプロシージャに変数@TEKIYO(Varchar)を作り、以下の行を足しました。

----------------------------------------------------------------
--摘要の検索条件がNULLかどうかを確認します。
--ここに値が含まれている場合WHERE句を作成します。
IF @TEKIYO IS NOT NULL
BEGIN
IF @SQLSTRING IS NOT NULL
BEGIN
SELECT @SQLSTRING = @SQLSTRING + ' AND TEKIYO LIKE ''%''' + @TEKIYO + '%'''
END
ELSE
BEGIN
SELECT @SQLSTRING = 'WHERE TEKIYO LIKE ''%''' + @TEKIYO + '%'''
END
END
----------------------------------------------------------------

adpの検索フォーム摘要欄に「未」と入力し実行ボタンを押すと「実行時エラー102 '未'付近に不適切な構文があります」と出てしまいました。
シングルクォーテーションの打ち方が間違っているのだろうと色々調べたり、打ち方を変えてみたりしたのですが、解決できず悩んでおります。
正解はどうなのでしょうか?教えてください。
なにとぞよろしくお願いいたします。

A 回答 (1件)

'(シングルクォーテーション)が含まれた文字列を考えるのって、最初はすごく戸惑いますよね。


以下のように考えていくと、わかりやすいのかな、と思います。

1.''で囲まれた部分は文字列として扱われる
2.'(シングルクォーテーション)を文字列として扱うのには、''(シングルクォーテーション二つ)

まず実際に作成したい文字列を記載し、上記を踏まえて分解していきます。


1.TEKIYO LIKE '%未%'    ←作成したい文字列

2.TEKIYO LIKE ''%未%''   ←シングルクォーテーション部分を二つに

3.TEKIYO LIKE ''%  未  %'' ←変数部分となるところを分ける

4.'TEKIYO LIKE ''%'  未  '%'''  ←変数以外の文字列となる部分をそれぞれシングルクォーテーションで囲む

5.'TEKIYO LIKE ''%' + @TEKIYO + '%'''  ←3.で切り出した変数部分となるところに ++で変数を埋め込む

こんな感じでいかがでしょうか。
    • good
    • 2
この回答へのお礼

お礼が遅くなってすみません!ありがとうございます!!
今作成したところバッチリ成功しました!
ものすごくわかりやすく教えていただいて本当にありがとうございます!
Management Studio Expressで作業していたのですが、'を打つたびに後に続く構文が赤くなったりグレーになったりで、どこまで打てばおさまるのか、おっしゃる通り戸惑いまくっていました。
まだまだ勉強していかなければならないので(セキュリティ関連さっぱりなのです。。)躓く事が多々あると思いますが、また何卒よろしくお願いいたします!

お礼日時:2006/12/07 03:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す