キャスト:10YR3/6 T-SQL確定INTは、所与
- SQL Serverの
- 表はタイプ
VARCHAR(50) NOT NULL
- 行1の
TEST_FIELD
と呼ばTEST_TABLE
にTEST_TABLE
- 列と呼ばれます:10YR3/2
- クエリ:
SELECT TEST_FIELD FROM TEST_TABLE WHERE ...
質問:私は、文字列の最後の文字の値をテストする必要が私のところ条件で
。私は、Where節で次のことを実行するのと同じ動作に気付きます。ケース1で
RIGHT(TEST_FIELD,1) > 3
CAST(RIGHT(TEST_FIELD,1) AS INT) > 3
彼らはいくつかの推論されたキャストを通じて同じ行動をしていますか?ケース1は決定的ですか?
ありがとうございます。あなたは、インスタンスの値をチェックするとき
マット
私の場合、私は値自体にいくつかのユニークな値を持っています。 10YR3/6。 10、3、および6を使用しないでください。 1036? 3または6の代わりに10を悪化させるか?私の質問がこれを念頭に置いて続けられるように、その行動についてはわかりません。 –
@MattAkers - 値を解析してそれぞれ10,3、そして6を得ることができればOKです。そうでない場合は、テキストと整数データ型の比較が例外をスローします。 10YR3/6と100の値を比較することはできません。操作の実行方法はわかりませんが、これはRight()またはLeft()とは何の関係もありません。比較終わらせる。これは理にかなっていますか? – JonH
それは完璧な意味合いがあります。私はあなたの例とコメントに完全に同意します。私の質問は、比較コンバージョンが合格/不合格になるタイミングとその理由は次のとおりです.1と2の部分が同じように動作するのはなぜですか?1がブラックボックスでキャストされているように見える場合、本当にキャストする必要がありますか?そして、第1節は決定論的な振る舞いをしていますか? –