1

20桁を超える長さで、最大長が定義されていない数値を格納したい。

入力して見つけた最大値を保持するデータ型を検索します。varchar(max)次のようなものが欲しいのですnumeric(max)が、そこにはありません。

何を使用すればよいですか。使用しても問題ありませんvarchar(max)が、番号を検証するにはどうすればよいですか。

4

3 に答える 3

1

bigint範囲は-2^63(-9,223,372,036,854,775,808)から2 ^ 63-1(9,223,372,036,854,775,807)なので、ニーズに合う場合があります。

SQL Serverにはこれ以上の整数型はないため、文字ベースのフィールド(テキストフィールドへの数値データの格納に関連するすべての変換と並べ替えの問題)を解決する必要がある場合があります。

于 2012-10-04T09:11:30.653 に答える
1

これによると、

データ型「float」は明らかに最大の数値サポートを持ち、309(!!!)桁の数値をサポートします。

それはあなたの数が整数であるか、実数であるか、負の可能性があるかによって異なります。

varchar(max)番号を保存するためにを使用することを計画している場合は、本当に深く考えてください。データベース内の列のタイプは、(私にとって)データの一貫性を確保するための最も重要なポイントです。それでそれは可能ですが、それは本当に必要ですか?

于 2012-10-04T09:12:27.210 に答える
1

使用しても問題ありvarchar(max)ませんが、番号を検証するにはどうすればよいですか?

チェック制約を使用できます。

CREATE TABLE Numbers (
     n varchar(max) not null,
     constraint CK_Numeric CHECK (n not like '%[^0-9]%')
)

チェック制約は、n列内の文字が0から9の範囲外にないことを確認することです。これは二重否定ですが、状態を表現する最も簡単な方法です。値に小数を含めることができる場合は、より複雑なチェックが必要になる場合があります。

CREATE TABLE Decimals (
     d varchar(max) not null,
     constraint CK_Numeric CHECK (
        d not like '%[^0-9.]%' AND
        LEN(d) - LEN(REPLACE(d,'.','')) in (0,1))
)

これは.現在許可されていることを意味し、LENチェックは文字列に0回または1回しか表示されないことを確認しています。

于 2012-10-04T09:25:13.330 に答える