- - PR -
SQLSqrverでDECIMAL型フィールドの整数桁数を取得したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-03 18:36
いつもお世話になっております。SQLSERVER2005、WinXPです。
EXCEL2000VBAでSQLSERVER2005にアクセスし、ユーザーテーブルの 定義をEXCELのセルで一覧にするマクロを作成中です。 VBAのADOで Rs.Fields(i).DefinedSize という定義桁数を抜き出す関数があります。CHAR型に関しては 問題なく抜き出せてるのですが、DECIMALに関しては一律19桁(バイト) になってしまいます。多分記憶領域のサイズを帰してるのだと思います。 有効桁数を返す関数は存在しないっぽいので、桁数を返す有効桁数を 返すSQLで対応しようと考えています。 しかしながら、system.culumnテーブルのlength(うろ覚え)で取ってきた値が 微妙に違うようなのです。使い方間違ってるのかとおもいます。 有効桁数を抜き出すSQL、もしくは他の対応方法をご存知の方が いらっしゃいましたらよろしくご教授のほどお願いします。 | ||||
|
投稿日時: 2006-04-03 18:53
SQLServerには使ったことがありませんが、ADOXにはADOX.columnに precisionとNumericScale というプロパティが存在します。
| ||||
|
投稿日時: 2006-04-03 19:44
こんにちは。
SQL Server 2000 のときの手法ですが、syscolumns ビューを使えば有効桁数を取得できます。 http://msdn2.microsoft.com/ja-jp/library/ms186816.aspx こんな感じです。
ただ、SQL Server 2005 ではカタログビューの使用が推奨されています。 上記のSQLも動作はしますが、カタログビューの sys.columns を使用するように書き換えた方が良いかもしれません。 [ メッセージ編集済み 編集者: ue 編集日時 2006-04-03 19:46 ] | ||||
|
投稿日時: 2006-04-04 10:46
鎌田様、ue様、ご返答ありがとうございます。
両方の方法を試してみたところ、どちらでもほしい情報が 取得できました。 ありがとうございました。 |
1