1. ホーム
  2. sql-server

[解決済み] SQL Serverです。データ型 nvarchar から数値への変換エラー

2022-03-12 15:05:05

質問

以下のSQLクエリを実行すると、以下のエラーが発生します。

データ型 nvarchar を数値に変換する際にエラーが発生しました。

COLUMNA は,最大で小数点以下2桁までのフィールドを含む数値(負と正)だけを含み,ドットデシマルとして格納される。

IF OBJECT_ID('st00_TABLEA','U') IS NOT NULL DROP TABLE [st00_TABLEA]
SELECT 
    COLUMNA AS COLUMNA_s
    ,CASE WHEN [COLUMNA] = '' THEN 0 ELSE CONVERT(NUMERIC(18,2),REPLACE([COLUMNA],',','.')) END AS COLUMNA
INTO st00_TABLEA
FROM dbosu.TABLEA;

また、以下のようにしましたが、やはり同じ問題です。

IF OBJECT_ID('st00_TABLEA','U') IS NOT NULL DROP TABLE [st00_TABLEA]
SELECT 
    COLUMNA AS COLUMNA_s
    ,CONVERT(DECIMAL(18,2),COLUMNA) AS COLUMNA
INTO st00_TABLEA
FROM dbosu.TABLEA;

解決方法は?

カラムのデータを修正する必要があるかもしれませんが、いずれにせよ、次のいずれかの方法を取ることができます。

1- 数値であるかどうかを確認し、変換します。

Select COLUMNA AS COLUMNA_s, CASE WHEN Isnumeric(COLUMNA) = 1
THEN CONVERT(DECIMAL(18,2),COLUMNA) 
ELSE 0 END AS COLUMNA

2- カラムから数値のみを選択する

SELECT COLUMNA AS COLUMNA_s ,CONVERT(DECIMAL(18,2),COLUMNA) AS COLUMNA
where Isnumeric(COLUMNA) = 1