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

SQLServerで「値をデータ型に変換するときに変換に失敗しました」を修正する方法

    SQLServerエラーメッセージ245、レベル16は、値を特定のデータ型に変換しようとしたときに問題が発生したことを示しています。

    間違ったデータ型を列に挿入しようとすると、このエラーが発生します。

    この問題を修正するには、挿入しようとしている値のデータ型が列の型と一致していることを確認してください。

    問題コードの例

    このエラーが発生するコードの例を次に示します。

    INSERT INTO Orders(OrderId, OrderDate, OrderDesc) 
    VALUES ('2020-04-02', '2020-04-02', 'Dog food');

    結果:

    Msg 245, Level 16, State 1, Line 1
    Conversion failed when converting the varchar value '2020-04-02' to data type int.

    この場合、OrdersIdに日付を挿入しようとしました 桁。エラーメッセージから、この列は intであると推測できます。 列ですが、それを確認する必要があります。

    テーブル定義を見ると、OrderIdがわかります。 列のタイプ:

    CREATE TABLE Orders (
        OrderId int NOT NULL,
        OrderDate date NOT NULL,
        OrderDesc varchar(255) NOT NULL,
        CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
        );

    予想どおり、OrderId 列はint 列。

    解決策

    この問題を解決するには、正しい値を挿入していることを確認する必要があります。また、テーブル定義が格納する必要のあるデータに適切であることを確認する必要があります。これは、データベースのデータ整合性を強化するのに役立ちます。

    この場合、列のデータ型は正しいです。この問題は、誤って間違ったデータを挿入しようとしたことが原因でした。

    したがって、この問題を修正するために、INSERTを変更できます。 正しいデータを挿入するステートメント。

    INSERT INTO Orders(OrderId, OrderDate, OrderDesc) 
    VALUES (1, '2020-04-02', 'Dog food');

    結果:

    (1 row affected)

    成功!


    1. Countに基づくIFELSEステートメントを使用して、さまざまなInsertステートメントを実行する

    2. MySQLで数値をフォーマットする方法

    3. MySQLでヒストグラムを作成する方法は?

    4. DATETIME列のランダム値