1

現在、SQL Server に問題があります。

私はちょうどこのようなクエリを行います:

declare @var2 int
set @var2 = ((7500.50 * 100) % 100)

select @var2

ローカル マシン (ローカルに接続されたクエリ ウィンドウ) で実行すると、50 が返されます。

しかし、オフィス サーバーに接続されているクエリ ウィンドウでそのクエリを実行すると、次のようになります。

メッセージ 8117、レベル 16、状態 1、行 2
オペランドのデータ型数値はモジュロ演算子に対して無効です。
メッセージ 206、レベル 16、状態 2、行 2
オペランド型の衝突: int は void 型と互換性がありません

SQL Server 2005 と 2008 の両方で試しました。

誰でも同じ問題に直面したり、解決策を知っていますか?

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

4

1 に答える 1

3

サーバーの互換性レベルを確認してください。これは、SQL Server 2000 との互換性のための 80 である可能性があります。SQL Server 2000 では、モジュロは INT データ型のみをサポートしていました。SQL 2005 以降では、数式に数値データ型と整数データ型の両方があるため、他の数値データ型が許可され、暗黙的な変換が行われます。

変更したくないデータベースをフィルタリングして、サーバーのすべてのデータベースの互換性レベルを変更するスクリプトを見つけました。

于 2012-07-27T05:05:06.977 に答える