0

他の列に基づいて列を作成しようとしていますが、エラーが発生し続けます:

「varcharからfloatへの変換エラー」連結ではなく追加しようとしていると思います。

私のステートメントは次のようになります。

select column1 + ' ' + column2 + ' ' as ColumnDesired

何か案は?

4

3 に答える 3

3

これらの列のいずれかが数値の場合、データ型の優先順位のために追加しようとしています。たとえば、すべての式を最も前例のあるデータ型(この場合は)に変換しようとするため、数学的SELECT 4 + 'cow'4追加しようとしています。cowINT

したがって、を使用CONVERTして、すべての数値およびその他の非文字列データ型列が明示的に文字列として扱われるようにします。これらの列には32文字で十分だと思いますが、32文字を超える列を誤って切り捨てないように注意してください。

SELECT ColumnDesired = CONVERT(VARCHAR(32), column1) + CONVERT(VARCHAR(32), column2)
FROM ...

NULLまた、 sに対処する必要があるかもしれません

SELECT ColumnDesired = COALESCE(CONVERT(VARCHAR(32), column1), '')
       + COALESCE(CONVERT(VARCHAR(32), column2), '')
FROM ...
于 2013-03-11T21:01:22.497 に答える
2

列を連結しようとしている場合は、数値の列を変換する必要がある場合があります。

select cast(column1 as varchar(50)) + ' ' + column2 + ' ' as ColumnDesired 

また

select column1 + ' ' +  cast(column2 as varchar(50)) + ' ' as ColumnDesired 
于 2013-03-11T21:03:03.830 に答える
1

列の1つは数値です。CONVERT()を使用してください。

結論として、暗黙の変換に依存することはなく、CONVERT()はすべて非(N)CHAR /(N)VARCHAR値です。

于 2013-03-11T21:07:58.917 に答える