Nirav Gandhi

Nirav Gandhi

  • NA
  • 4.9k
  • 119.8k

Getting "Error converting data type varchar to numeric."

May 31 2019 6:42 AM
"Getting "Error converting data type varchar to numeric." in Table variable(@TableData) but not in #Temp"

I am facing issues while inserting data on table variable. I have created two table with same datatype,

1)@TableData

2)#TableData

Now I am inserting same data on both tables, but I am getting error “Error converting data type varchar to numeric.” in @tableData but not in #temp. Please check below example.

  1. DROP TABLE IF EXISTS #temp  
  2. DROP TABLE IF EXISTS #TableData  
  3.   
  4. Declare @TableData as Table  
  5. (   ID int Primary key Identity(1,1),  
  6.     A [intNULL,  
  7.     B [varchar](30) NULL,  
  8.     C [intNULL,  
  9.     D [intNULL  
  10. )  
  11.   
  12. Create table #TableData   
  13. (   ID int Primary key Identity(1,1),  
  14.     A [intNULL,  
  15.     B [varchar](30) NULL,  
  16.     C [intNULL,  
  17.     D [intNULL  
  18. )  
  19.   
  20. INSERT INTO @TableData  
  21.        SELECT  A,   
  22.               B,   
  23.               C,   
  24.               D  
  25.     FROM TableData   
  26.        
  27. CREATE TABLE #temp  
  28. (ID VARCHAR(50),   
  29.  A     VARCHAR(5000),   
  30.  B          VARCHAR(5000)  
  31. )  
  32.   
  33.   
  34. INSERT INTO #temp (  
  35.     ID  
  36.     ,A  
  37.     ,B  
  38.     )  
  39. SELECT ID  
  40.     ,SUM(A) AS AR_USERENTRY  
  41.     ,AR_AREA  
  42.  FROM (  
  43. SELECT DISTINCT   
  44.        EP.ID,   
  45.        SUM(ISNULL(CAST(A AS NUMERIC(18, 0)), 0)) AR_USERENTRY,  
  46.      --  AR_USERENTRY   
  47.        B  
  48. FROM @TableData AS T  
  49. inner join [RESPONSE_DATA_V] AS V on    T.ID=V.ID  
  50.        
  51. WHERE [AR_ISDELETED] = 0  
  52.       AND AR_USERENTRY != '$'  
  53.       AND AR_USERENTRY != '+'  
  54.       AND AR_USERENTRY != ','  
  55.       AND AR_USERENTRY != '-'  
  56.       AND AR_USERENTRY != '.'  
  57.       AND AR_USERENTRY != '\'     
  58.       AND 1 = CASE   
  59.         WHEN ISNUMERIC(AR_USERENTRY) = 1  
  60.             AND CAST(AR_USERENTRY AS NUMERIC(18, 2)) >= 0  
  61.             THEN 1  
  62.         ELSE 0  
  63.         END --M5     
  64.   
  65. GROUP BY EP.A,   
  66.          B  
  67.             ) TT   
  68.             WHERE B IS NOT NULL  
  69.          GROUP BY A  
  70.             ,B

Answers (5)