sql >> データベース >  >> RDS >> Sqlserver

値を float としてキャストできません

    念のため。

    SQL Server 2012 では TRY_CONVERT が導入されています この必要性のために。したがって、次のクエリは NULL を返します。 エラーではなく。

    SELECT TRY_CONVERT ( FLOAT, 'Fish')
      

    シリアル プランであっても、WHERE が一致する保証はありません。 句は SELECT の前に発生します 評価されます。説明したように このブログ投稿 SQL Server 2005 以降では、以前のバージョンよりも発生する可能性が高くなります。 SQL のデータベース エンジン機能の動作変更サーバー 2005 具体的には、次のように呼び出します。

    この動作に関する詳細な議論は、Craig Freedman 変換と算術エラー .

    2012 より前のバージョンおよび TRY_CONVERT の場合 CAST AS FLOAT をラップする必要があります CASEで 声明。例

      SELECT CASE WHEN ISNUMERIC(Col)=1 THEN CAST(Col AS FLOAT) END AS Col
      FROM Table
      WHERE ISNUMERIC(Col)=1
      

    ISNUMERIC としてエラーが発生しないようにすることは、まだ完全に保証されているわけではありません。 それ自体は、具体的にフロートするのではなく、数値データ型のいずれかに値がキャストされることを確認するだけです-1/7400335#7400335">失敗する入力の例は '.' です。

    CASE オンラインの書籍では、ほとんどがショート サーキットであることが文書化されています (いくつかの例外についてここで説明します )

    これに関する追加の議論/苦情は、接続項目 SQL Server は非論理的なエラーを発生させません および 同様の問題の適切な説明 SQLキウイによって



    1. Powershellを使用してリモートPostgreSqlデータベースに接続します

    2. 同じテーブルの親/子

    3. UPDATEクエリ後のPDOrowCount()は、変更が行われていない行と存在しない行の違いを示すことができますか?

    4. メールをチェックしてユニークなPHPにする