Conversion failed when converting the varchar value 'simple, ' to data type int
group-by, sql, sql-server, t-sql
Solution
In order to avoid such error you could use `CASE` + `ISNUMERIC` to handle scenarios when you cannot convert to int. Change
CONVERT(INT, CONVERT(VARCHAR(12), a.value))
To
CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value)
ELSE 0 END)
Basically this is saying if you cannot convert me to int assign value of 0 (in my example)
Alternatively you can look at this article about creating a custom function that will check if `a.value` is number: http://www.tek-tips.com/faqs.cfm?fid=6423
Problem
I am struggling for a few days with this issue and I can't figure out how can I fix it. I would like to `group by` my table on values `1`,`2`,`3`,`4`,`5` so I have created a temporary table with this values. Now I have to `INNER JOIN` this table with other tables on `a.value = #myTempTable.num`. BUT `a.value` is `ntext` so I need to `CONVERT` it what I actually did, but I am getting an error: Conversion failed when converting the varchar value 'simple, ' to data type int. (on line 7) ``` Create table #myTempTable ( num int ) insert into #myTempTable (num) values (1),(2),(3),(4),(5) SELECT a.name, CONVERT(INT, CONVERT(VARCHAR(12), a.value)) AS value, COUNT(*) AS pocet FROM (SELECT item.name, value.value FROM mdl_feedback AS feedback INNER JOIN mdl_feedback_item AS item ON feedback.id = item.feedback INNER JOIN mdl_feedback_value AS value ON item.id = value.item WHERE item.typ = 'multichoicerated' AND item.feedback IN (43) ) AS a INNER JOIN #myTempTable on CONVERT(INT, CONVERT(VARCHAR(12), a.value)) = #myTempTable.num GROUP BY a.name, CONVERT(INT, CONVERT(VARCHAR(12), a.value)) ORDER BY a.name drop table #myTempTable ``` I am not getting this error without the last `INNER JOIN` ``` INNER JOIN #myTempTable on CONVERT(INT, CONVERT(VARCHAR(12), a.value)) = #myTempTable.num ``` Could someone help me please? Thanks.