2017-06-15 23 views
0

SQLデータ型エラー

[アカウントまたはローンいいえ]欄「メッセージ8114、レベル16、状態5、行2
変換エラーデータ型に対して、私はこのエラーを取得しています以下のSQLクエリの実行中nvarcharを浮動させる。

どのように[アカウントまたはローン番号]列をvarcharに変換できますか?

SELECT Distinct p.*, b.[Account or Loan No] as AccountNo006, b.Bucket as 
    Bucket006, b.[No of Overdue Days] as DPD006, b.[Markup Receivable Amount] 
    as MarkupReceivableAmount006, b.[MUP Current Balance (PKR)] as 
    CurrentBalance006 
FROM [test].[dbo].[newtable004] p 
Left join [test].[dbo].[ADV006-BPDLDMGTranchwise] b 
on p.[Account or Loan No] = b.[Account or Loan No] 
+0

問題は、列のデータの中には、数値に変換できない 'varchar'(テキスト)があることです。あなたはどのデータであるか、それがタイプミス(その場合は 'UPDATE')の結果であるのか、それが意図したデータであるのか(これは変換できない場合) – SchmitzIT

答えて

0

あなたはこれらの2つのデータ型が相互に互換性がないことを知っている必要があり浮かぶようにvarchar型に変換することを計画している場合。以前のバージョンのSQL Serverでは、CASE、ISOMUMERIC & CONVERTを使用してvarcharをfloatに変換する必要がありましたが、それ以降のバージョンではTRY_CONVERTという1つの関数を使用して変換できます。私はそれを説明するためのサンプルを作成しましょう。 ([番号]はVARCHAR変数である)

方法1つの実施例:(SQL Serverの以前のバージョンの場合):

--This script is compatible with SQL Server 2005 and above. 
Use tempdb 
GO 
Select [Numbers], 
(Case When Isnumeric([Numbers])=1 Then 
Convert(float,[Numbers]) else NULL end) As [Varchar to Float] 
from tbl_test 

方法2(SQL Serverの後vesrsion):

--This script is compatible with SQL Server 2012 and above. 
Use tempdb 
GO 
Select Try_convert(float,[Numbers]) as [Varchar to float] 
from tbl_test 
+0

レコードについては、['IsNumeric()'](https://docs.microsoft.com/en-us/sql/t-sql/functions/isnumeric-transact-sql)は有名な[problematic]です(http:// www.sqlservercentral.com/articles/ISNUMERIC()/71512/)。 – HABO