none
文字列変数の最大長の取得 RRS feed

  • 質問

  • はじめまして

    文字列変数の最大長を取得したいのですが、ご存知の方がいらっしゃいましたら教えてください、

    たとえば、下記の通り文字列変数を宣言したとして、取得したいのは15という変数@ABCDの最大長を取得したいのです。

    DECLARE @ABCD VARCHAR(15)

     よろしくお願いします。


    osaru
    2011年3月17日 4:50

回答

  • どんな用途に必要になるのか判らないまま、いろいろ調べてしまいました(笑)

    こんなので行けるようですが、変数がNULLの場合は、取れませんのでNULLの場合はダミー値を入れるなどの対処は必要でしょう。

    DECLARE @TEST AS VARCHAR(15)
    SET @TEST='ABCD'
    SELECT SQL_VARIANT_PROPERTY(@TEST,'BaseType') AS typeName
          ,SQL_VARIANT_PROPERTY(@TEST,'MaxLength') AS MaxLength

     


    ---------------------------------
    Infospire Kayano
    • 回答としてマーク azarasi 2011年3月22日 1:13
    2011年3月18日 12:09
  • IS Kayano-san が既に回答しているとおり、SQL_VARIANT_PROPERTY 関数を使用すれば実現可能だと思います。

    注意点として、'MaxLength' はバイト単位なので、char(10) は 10 (バイト)、 nchar(10) は 20 (バイト) になります。

    SQL_VARIANT_PROPERTY (Transact-SQL)
    http://msdn.microsoft.com/ja-jp/library/ms178550.aspx

    • 回答としてマーク azarasi 2011年3月22日 1:13
    2011年3月19日 0:13

すべての返信

  • どんな用途に必要になるのか判らないまま、いろいろ調べてしまいました(笑)

    こんなので行けるようですが、変数がNULLの場合は、取れませんのでNULLの場合はダミー値を入れるなどの対処は必要でしょう。

    DECLARE @TEST AS VARCHAR(15)
    SET @TEST='ABCD'
    SELECT SQL_VARIANT_PROPERTY(@TEST,'BaseType') AS typeName
          ,SQL_VARIANT_PROPERTY(@TEST,'MaxLength') AS MaxLength

     


    ---------------------------------
    Infospire Kayano
    • 回答としてマーク azarasi 2011年3月22日 1:13
    2011年3月18日 12:09
  • IS Kayano-san が既に回答しているとおり、SQL_VARIANT_PROPERTY 関数を使用すれば実現可能だと思います。

    注意点として、'MaxLength' はバイト単位なので、char(10) は 10 (バイト)、 nchar(10) は 20 (バイト) になります。

    SQL_VARIANT_PROPERTY (Transact-SQL)
    http://msdn.microsoft.com/ja-jp/library/ms178550.aspx

    • 回答としてマーク azarasi 2011年3月22日 1:13
    2011年3月19日 0:13
  • IS Kayano-san さん

    回答ありがとうございます。

    SQL_VARIANT_PROPERTYで目的の事が実現できました。

    ありがとうございました。


    osaru
    2011年3月22日 0:59
  • NOBTA さん

    回答ありがとうございます。

    SQL_VARIANT_PROPERTYで目的の事が実現できました。

    ありがとうございました。


    osaru
    2011年3月22日 0:59