[SQL] VARCHAR를 값을 변환 할 때 변환 int 데이터 형식 '단순한'를 실패한
SQLVARCHAR를 값을 변환 할 때 변환 int 데이터 형식 '단순한'를 실패한
나는이 문제에 며칠 동안 고민하고 있고 나는 그것을 해결하는 방법을 알아낼 수 없습니다.
내가 값을 내 테이블에 의해 그룹 싶습니다 1,2,3,4,5 나는이 값을 임시 테이블을 만든 있도록.
지금은 INNER에있는이 a.value = # myTempTable.num 다른 테이블과이 테이블에 가입하세요.
하지만 a.value 내가 실제로 한 일을 변환해야하지만 오류가 점점 오전 있도록 NTEXT입니다 :
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
나는 마지막으로 INNER없이이 오류를 JOIN 받고 있지 않다
INNER JOIN #myTempTable on CONVERT(INT, CONVERT(VARCHAR(12), a.value))
= #myTempTable.num
당신은 내게 제발 도와 주 시겠어요? 나는 필사적입니다.
감사.
해결법
-
==============================
1.당신이 INT로 변환 할 수 없습니다 때 핸들 시나리오에 CASE + ISNUMERIC을 사용할 수있는 등의 오류를 방지하기 위해. 변화
당신이 INT로 변환 할 수 없습니다 때 핸들 시나리오에 CASE + ISNUMERIC을 사용할 수있는 등의 오류를 방지하기 위해. 변화
CONVERT(INT, CONVERT(VARCHAR(12), a.value))
에
CONVERT(INT, CASE WHEN IsNumeric(CONVERT(VARCHAR(12), a.value)) = 1 THEN CONVERT(VARCHAR(12),a.value) ELSE 0 END)
기본적으로이 날의 변환을 할 수없는 경우에 (내 예) 0의 할당 값을 int로 말하는
http://www.tek-tips.com/faqs.cfm?fid=6423 : 또는 당신은 a.value이 번호가 있는지 확인하는 사용자 정의 함수를 만드는 방법에 대해이 문서를 볼 수 있습니다
-
==============================
2.난 그냥 또한 VARCHAR를 사용하여 주변의 테이블 정의를 전환 할 거라고는 다음 비교를 수행하는 방법의 int로 전환하고 있음을 감안할 때 :
난 그냥 또한 VARCHAR를 사용하여 주변의 테이블 정의를 전환 할 거라고는 다음 비교를 수행하는 방법의 int로 전환하고 있음을 감안할 때 :
Create table #myTempTable ( num varchar(12) ) insert into #myTempTable (num) values (1),(2),(3),(4),(5)
쿼리의 나머지 부분에서 시도 된 변환을 모두 제거합니다.
SELECT a.name, 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 a.value = #myTempTable.num GROUP BY a.name, a.value ORDER BY a.name
-
==============================
3.당신이 INT 메이크업에 VARCHAR를 변환하는 경우 반드시 소수점 곳이 없습니다.
당신이 INT 메이크업에 VARCHAR를 변환하는 경우 반드시 소수점 곳이 없습니다.
당신이 정수 값 (12345.0)와 VARCHAR 필드를 변환하는 경우 예를 들어, 당신은이 변환 오류가 발생합니다. 내 경우에는 내가 전 세계적으로 문제를 해결하기 위해 다음과 같은 성명을 사용하므로 끝으로 0.0으로 내 모든 필드를했다.
CONVERT(int, replace(FIELD_NAME,'.0',''))
from https://stackoverflow.com/questions/21984110/conversion-failed-when-converting-the-varchar-value-simple-to-data-type-int by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] "..에와"사이의 차이 "에 .. 어디"SQL 왼쪽에서 가입? [복제] (0) | 2020.06.06 |
---|---|
[SQL] 같은 '%'NULL 값을 허용하지 않습니다 (0) | 2020.06.06 |
[SQL] "수"버전으로 SQL 정렬, 다양한 길이의 문자열 (0) | 2020.06.06 |
[SQL] MySQL은 SELECT는 NOT IN이 (SELECT가 B의 X) WHERE A로부터 X - 예기치 않은 결과를 (0) | 2020.06.06 |
[SQL] SQLite는 외국인 키 제약 조건을 활성화 (0) | 2020.06.06 |