none
ストアドでのLikeの構文について RRS feed

  • 質問

  • みなさま、こんにちは。

    Sql server2000のストアドにて、テキストボックスの値を検索しようと設定したところ、どうしても最初の1文字分しか検索に引っかかりません。

    @p1 nvarchar
    中略
    WHERE           (テーブル名 LIKE   rtrim(@p1) + '%')

    たとえば、「さいとう」で検索しても、「さ」としか認識しません。rtrimを外しても同じです。なぜでしょうか?

    2012年2月24日 3:30

回答

  • 文字型の桁数を省略した場合、 1 が指定されたとみなされます。このため、

    @p1 nvarchar

    という記述は、

    @p1 nvarchar(1)

    という意味になります。このため、

    SET @p1 = 'さいとう';

    と設定すると、2文字目以降は切り捨てられて @p1 には 'さ' しか格納されないことが原因ではないでしょうか。


    • 編集済み K. Takaoka 2012年2月24日 3:48 文字列型⇒文字型に修正
    • 回答としてマーク T.Tonooka 2012年2月24日 4:54
    2012年2月24日 3:48

すべての返信

  • 文字型の桁数を省略した場合、 1 が指定されたとみなされます。このため、

    @p1 nvarchar

    という記述は、

    @p1 nvarchar(1)

    という意味になります。このため、

    SET @p1 = 'さいとう';

    と設定すると、2文字目以降は切り捨てられて @p1 には 'さ' しか格納されないことが原因ではないでしょうか。


    • 編集済み K. Takaoka 2012年2月24日 3:48 文字列型⇒文字型に修正
    • 回答としてマーク T.Tonooka 2012年2月24日 4:54
    2012年2月24日 3:48
  • そのとおりでした。 早速の回答ありがとうございました。

    やはり初歩的なことを見落とすのは怖いですね。

    2012年2月24日 4:54