質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

12006閲覧

SQL Server 2012での暗黙変換について

y-haga

総合スコア23

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/03/06 06:12

###知りたいたいこと

SQL

1SELECT * FROM TABLE_A WHERE ID=0123456789012345678 2--※カラム[ID]は「varchar(18)」となっています。

この場合に、IDへの条件に上記のような文字列ではない数値「0123456789012345678」を指定すると
「varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。」
が、発生します。

この時暗黙変換されて、「ID」が数値となっているかと思いますが、なぜエラーとなるのでしょうか?
数値の開始が「0」なため、暗黙変換時になにか特殊な変換がされるのでしょうか?

可能であれば、エラーの理由とカラム「ID」がどういった評価が内部的にされているのかを教えてください。
また暗黙変換される「ID」の評価値を確認する方法があれば教えてください。

尚、上記SQLは開始が「0」でなければ正常に結果を返却します。
※数値部分を文字列(''囲い)にすれば正常に動作することはわかります。
そうではなく、どういった評価がされているかが知りたいです。

###補足情報(言語/FW/ツール等のバージョンなど)
MicroSoft SQL Server 2012

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

SQL Serverは、暗黙変換の場合、インデックスが効きません。
その場合、IDがキーでも全件を評価します。
その際、データの中に18桁のID「123456789012345678」があり、かつIDの条件が「0123456789012345678」だと桁数が違う為、算術エラーとなっていました。

投稿2019/03/06 09:06

y-haga

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SQLでは文字列はシングルクォーティング(シングルクォートで囲む)が掟です。

SQL

1SELECT * FROM TABLE_A WHERE ID=0123456789012345678 23SELECT * FROM TABLE_A WHERE ID='0123456789012345678'

シングルクォーティングできない理由でも?

投稿2019/03/06 08:43

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y-haga

2019/03/06 09:04

お客様のサーバで発生したため、原因の調査が必要でした。 文字列にすればうまくいくのはわかりますが、どういう評価でエラーになるのか?が知りたかった次第です。 尚、自己解決致しました。
Orlofsky

2019/03/06 09:13

暗黙の型変換ではテーブルの全件操作になってインデックスは使わないのはSQLの常識です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問