MS SQL Serverの列名の最大文字数は?

このQ&Aのポイント
  • MS SQL Serverにおける列名の文字数制限について調べています。
  • Oracleでは30Byteが指定されていますが、MS SQL Serverでは明確な制限が見つかりません。
  • 質問者は公式文書に記載されている「COLUMN_LENGTH」の横の数字「128」に疑問を持っています。
回答を見る
  • ベストアンサー

列名の最大文字数は?(MS SQL Server)

こんにちは、いつも参考にさせていただいております。 今Microcoft SQL Server2008のためのDB設計を行っているのですが、 列名を設定する時点になって、文字数の制限があっただろうかと 立ち止まってしまいました。 Oracleは30Byteとか指定がありましたが、 MS SQL Serverでは公式文書ぐらいしか見つけられず これだ!というわかりやすい答えに出会えていません。 (公式文書…  http://msdn.microsoft.com/ja-jp/library/aa260295(SQL.80).aspx ) 公式文書の 「COLUMN_LENGTH」の横にある数字「128」があやしいな、と思っていますが型はvarcharなのでしょうか? それだと何文字ぐらい入るのでしょうか? とても初歩的という質問だとは思いますが、どうかご助言いただけないでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

列名にはsysnameというデータ型が使われます。 どのデータベースでもいいので、SSMSのビュー-システムビューを開いて、sys.columnsを探します。 name列の定義を見てみると、 name (sysname(nvarchar(128))、NULL) と表示されているはずです。 sysnameは内部的にはnvarchar(128)であるということです。 したがって「Unicodeで128文字まで(=256バイトまで)」となると思います。 ちなみにクエリは以下 select name, type_name(user_type_id) user_type, type_name(system_type_id) system_type, max_length from sys.all_columns where object_id=object_id('sys.columns')

yuripppe
質問者

お礼

jamshid6さん、ご回答ありがとうございます。 教えて頂いたとおりにSSMSを探してみると出てきました。 クエリまで教えて頂いてありがとうございました。 実はSQL Serverを扱うのは初めてでどこから手をつけたらいいか 見た目から困惑してしまっていたので、本当に助かりました。 ありがとうございました。

関連するQ&A

  • VB6とSQL Serverの桁の扱い方について

    Win XP VB6 SP5 SQL Server VB6とSQL Serverの桁の扱い方について 文字列の桁数チェックをする際に 以下の不都合が出ています。 例:1 SQL Serverのvarchar(4)には "aaaa"が登録可能です。 しかしLenB("aaaa")は8が返ってきます。 例:2 SQL Serverのvarchar(4)には "ああ"が登録可能です。 LenB("ああ")は4が返ってきます。 結論 LenB("aa")とLenB("ああ")は両方共4が返ってきます。 "a"も"あ"も2バイトとして扱っています。 SQL Serverでは"a"は1バイト "あ"は2バイトとして扱っています。 これは少しおかしいと感じたのですがいかがでしょうか? 文字の桁数チェックを行う時に発見したのですが みなさんは文字の桁数チェックをどのようなやり方で 行っているのでしょうか?

  • SQL Server のキャラクターセット(内部文字コード)は何処で定義するのでしょうか?

    SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。 今回SQL Server2005 を使って簡単なシステムを構築する事になりました。 SQL Serverが扱う文字コートについて教えてください。 Oracleを使っていた時の経験としてDB内部のキャラクターセットと クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。 きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。 以下2点についてどなたかコメント願います。 1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか? 2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?  (ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?) 根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。 『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。 以上よろしくお願いします。

  • SQL Serverに接続できなくなった。

    はじめまして 現在スタンドアロンのノートPCにSQL Serverと OracleをインストールしたところSQL Serverに アクセスができず(クリエアナライザ使用) 以下の メッセージが表示されました。 ----------------------------------------------- サーバーに接続できません127.0.0.1 サーバーメッセージ17、レベル16、状態1 [Microsoft][ODBC SQL Server Driver] [TCP/IP Sockets]SQL Serverが存在しないか、 アクセスが拒否されました。 ----------------------------------------------- ※ Windows XP SP2 SQL Server 2000 Developer Edition Oracle 9i DataBase(9.0) 調べてみたところ以下のようなページを見つけ書いて ある内容も試してみましたが症状は変わりませんでした。 http://support.microsoft.com/default.aspx?scid=kb;ja;839269 Oracleをインストールする前は問題なく使えていたので OracleとSQL Serverがどこかのポート番号が衝突して いるのでは?と思っているのですが、それ以上の解決方法が探せない状況です。初歩的な質問かもしれませんが、皆様のお力をお借りしたいと思います。 宜しくお願いします。

  • varchar型の入力できる最大文字数について

    varcharでサイズを8000にしたフィールドに1000文字(例えば’aaa・・・「a」を1000文字・・・’)INSERTした後にそのフィールドをSELECTすると256文字しか入っていません。どうしてなんでしょうか? SELECT、INSERTなどのSQLの実行は”クエリ アナライザ”や”SQL Server Enterprise Manager”で試しました。 SQLServer初心者です。何卒宜しくお願い致します。

  • SQL ServerのUNICODE設定について

    SQL Server 2005を使っていますが、SJIS形式で格納された、Oracleの データを、SQL ServerのUNICODEで構成されたテーブルに、ロードする 必要があります。 Oracleでは、異なる文字コードの場合、SQL Netが自動的に、文字 コードを判断して、自動変換してくれますが、SQL Serverでは、 どのようになりますか?SQL Native Client等が、自動変換してくれる のでしょうか? お手数ですが、どなたかお教え下さい。

  • オラクル SQLサーバーにて ファイルをDB管理したい

    オラクルもしくはSQLサーバーにて ファイルとか画像もデータベースで管理したいのですが オラクルやSQLさーばーはファイルとかDBは 管理できるのでしょうか? 管理できる場合 ファイルをDBに保存するのでしょうか? もしくは ファイルへのリンク アドレスを 管理するのでしょうか? 詳しい方教えてください

  • SQL Server において

     いつも大変お世話になっています。  早速質問させていただきます。  SQL SERVER で、数値演算を行いたいのですが、 どれが演算子になっているのかがよく分かりません(- -; 「+」だと文字列演算になってしまい、ならば、数値型に変換してからやればいいのだ!!とおもい、TO_NUMBER関数を使ったところ関数とは認識されませんでした(T T)。 一体どうすればいいのでしょうか?お願いします。教えていただきたいです。 Oracleの関数が使えない場合があるので、SQL SERVER で使用できる関数が載っているサイトなどがあったら教えていただきたいです。

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。

  • SQL Serverの型変換について

    こんにちは。 DB未経験で勉強中です! どなたか教えてください。。 OracleのTO_DATE関数のようなことはSQL Serverでは実現可能でしょうか? 数値型から日付型への変換です。 たとえば20121109を2012/11/09と変換、 もしくは201211を2012/11に変換するなどです。 是非、ご教授願いします。

  • 【PostgreからSQL-ServerのテーブルをSelect】

    【PostgreからSQL-ServerのテーブルをSelect】 PostgreからSQL-ServerのDBにあるテーブルをSelectしたいのですが、 ODBCまでは設定したものの、それ以降のやり方がわかりません。 どなたか教えていただけないでしょうか。 【参照元】 *Windows 2003 ServerR2(32Bit) *SQL-Server 2005 【参照先】 *Windows 2003 ServerR2(32bit) *PostgreSQL 8.2 参照先と参照元を変更すればSQL-Server上で出来そうなのですが、 今回、Postgre側からSQL-ServerにSelectしなければなりません。 OracleでいうところのDB Linkなのですが、どなたか教えていただけないでしょうか。 URLのご提示でも結構です。 どうぞよろしくお願いいたします。 Postgre ---- Select(後にViewに変更予定) ----→ SQL-Server