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

SQLServerで連結しようとしたときの「varchar値の変換時に変換に失敗しました」を修正

    SQL Serverで連結操作を実行しようとしたときに、「 varchar値の変換時に変換に失敗しました…」というエラーメッセージ245が表示された場合は、文字列を連結しようとしている可能性があります。と番号。

    これを行うと、SQL Serverが文字列と数値を連結するのではなく追加しようとするため、エラーが発生します。

    これを修正するには、数値を文字列に変換するか、CONCAT()などの関数を使用します またはCONCAT_WS() 連結を実行します。

    エラー

    エラーの原因となるコードの例を次に示します。

    SELECT 'Player ' + 456;

    結果:

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

    SQL Serverは、2つのオペランドを追加しようとしていると見なしているため、文字列と数値を追加しようとすると問題が発生します。

    ソリューション1

    この問題を解決する1つの方法は、数値を明示的に文字列に変換することです。

    SELECT 'Player ' + CAST(456 AS varchar(3));

    結果:

    Player 456

    これにより、SQL Serverは、オペランドを追加するのではなく連結しようとしていることを認識します。

    ソリューション2

    これを行う別の方法は、CONCAT()のような関数を使用することです。 連結を実行するには:

    SELECT CONCAT('Player ', 456);

    結果:

    Player 456

    CONCAT() は文字列関数であるため、SQL Serverは、2つの数値を加算するのではなく、2つの文字列を連結する必要があることを認識します。

    または、CONCAT_WS()を使用することもできます 関数。連結された引数の間に使用する区切り文字を指定できます。


    1. 設計データベースへの先史時代および現代のアプローチ

    2. 時間の部分を無視して、T-SQLで日付を比較します

    3. 条件付き一意制約

    4. SQL Serverのテーブルから列名を取得するにはどうすればよいですか?