2014-05-22 4 views
-2
UPDATE DB 
SET ID = 400 
WHERE 'ID2' = 400; 

나는 두 가지 질문이 있습니다. 첫 번째 : 왜 숫자가 필요하며 ID가 없는지 저는 정말로 이해할 수 없습니다. (숫자에 숫자가 없으면 오류가 발생합니다). 두 번째 : "잘못된 번호"오류 메시지가 나타나는 이유는 무엇입니까?ORA 잘못된 번호

400 '을 넣을 수는 있지만 그 결과는 0입니다.

ID 속성은 숫자 (3,0)이고 ID2 속성은 varchar (3BYTE)입니다.

감사

답변

2

'ID2'이 컬럼의 이름이 아닙니다, 그것은 리터럴 문자열입니다. 작은 따옴표는 SQL에서 문자열을 묶는 데 사용됩니다. 문자열 리터럴을 숫자 리터럴과 비교하므로 서버가 문자열을 숫자로 변환하려고 시도하여 잘못된 숫자 오류가 발생합니다.

(정확하게 해석되기를 원하면 열 이름을 큰 따옴표로 묶을 수 있습니다. 일반적으로 이름에 대/소문자가 혼합 된 열을 만든 사람이 여기에 해당합니다.)

ID2 열이 VARCHAR, 당신은 그 값이 문자열 '400'에 해당 행을 찾으려면

경우에, 나는 당신의 술어가 WHERE ID2 = '400' 있어야한다고 생각합니다. 그게 당신에게 오류를 준다면, 그것은 무엇입니까?

+0

고마워요! 그러나 그것도 작동하지 않습니다. 나는 아직도 이런 식으로 ORA-00904를 얻는다. – XyFreeman

+0

문제가 해결되었습니다. 어제 내 검색 기술이 실패했습니다. 문제는 "DDL에 있기 때문입니다. – XyFreeman