2017-01-24 9 views
1

나는 다음과 같은 테이블이 있습니다구문 오류

CREATE TABLE Book(article int, subArticle numeric); 

2 필드 - 첫번째 문서는 1.1가되도록 subArticle이 기사의 subarticles을 포함, 1.2 등 subarticles을

두번째 기사는 '1.2'subarticle을 가질 수 없습니다 -

(1, 1.1), 
(2, 1.2); 

그래서 그 두번째 행이 올바르지 않습니다

표와 같은 값이 있습니다. '2.1', ... 서브 입자가 있습니다.

나는 비교 'subarticle'필드 ('1' '1.2'에서) 내 문서 부분은 '기사'필드에 따라 진짜 문서 값에 해당하는 만 라인을 떠나 다음 쿼리를 실행합니다

SELECT * 
FROM Book 
WHERE LEFT(subArticle, CHARINDEX('.', subArticle) - 1) = article; 

그러나 WHERE 절에서 구문 오류가 발생하지 않습니다. WHERE 절이 없으면 오류가 없습니다. 값을 비교하여 값을 비교해야합니까? 나는 시도했지만 성공하지 못했다. 그렇다면 올바른 캐스트는 무엇입니까?

P. sqlite3 사용

답변

-1

CharIndex는 문자열 용입니다. 문자 (따라서 이름). 당신은 숫자에 그것을 사용할 수 없습니다.

subArticle 나는 스키마를 재구성하고 작동 할 때까지이 쿼리를 mangle하려고하지 않는 것이 가장 좋은 옵션이라고 생각합니다.

실제로이 형식은 int이어야하므로 재귀 키이어야한다고 생각합니다. 나는 왜 당신이 현재 다중 부분 가치를 가지고 있는지 확신 할 수 없다. 그래서 당신이 당신의 스키마를 제어 할 수 있다면 당신은 그것을 바꾸거나 다시 생각해 볼 수 있습니다.

+0

와 SQL 서버 구문을 사용하려고 나는 (내가 SQL-초보자 해요) 무슨 뜻 이죠 확실하지 않다. 기사에서 서브 그룹을 들여 써야하므로 기사 1 : 서브 그룹 1.1 등 올바르게 입력하면 '1.1'을 int로 표시 할 수 없지만 숫자로 표시 할 수 있습니다 – Shurov