0
여부에 따라 두 개의 열 사이의 선택 : 나는 새 열을 추가 할 필요가테라 데이타는 - 그것은 숫자로 시작하거나 I과 유사한 보이는 쿼리하지
SELECT
s.cola, s.colb, t.colc, t.cold, u.cole, u.colf, u.colg, u.colh, u.coli, u.colj, u.colk, u.coll
FROM table1 s
INNER JOIN table2 t
ON s.colb = t.colc
INNER JOIN table3 u
ON u.colm = t.cold
WHERE cast(s.cola as date) between date '2017-11-06' and date '2017-11-10'
ORDER BY 3
는에 인 col_new
라고 u.colm
또는 u.coln
으로 채워야합니다. 해당 열이 숫자로 시작하면이 열의 값은 u.colm
입니다. 그렇지 않은 경우 값은 u.coln
입니다. 테이블 u
의 각 항목에 대해 u.coln
또는 u.colm
이 숫자로 시작하는 것으로 알려져 있습니다. Syntax error: expected something between '(' and the 'substring' keyword.
이 친절하게 해결책을 제안한다
SELECT CASE WHEN ISNUMERIC(SUBSTRING(LTRIM(colm), 1, 1)) = 1
THEN 'yes'
ELSE 'no'
END AS col_new
FROM table_u
그것은 오류를 반환
나는 숫자로 시작하는 항목이 확인 여부를 할 수 있는지 테스트하기 위해 다음 쿼리를 시도했다.
편집 : 정확한 오류 :
SELECT (CASE WHEN LEFT(LTRIM(colm), 1) BETWEEN '0' AND '9' THEN 'yes'
ELSE 'no'
END) AS col_new
FROM table_u;
LEFT()
문자열의 첫 번째 "N"문자 편리한 속기 :
[Teradata Database] [3706] Syntax error: expected something between '(' and the 'substring' keyword.
정확한 오류를 표시 할 수 있습니까? 귀하의 구문을 올바르게 보인다. –
또한 숫자로 시작하는 경우 대신 'LEFT'를 사용해보십시오. 'ISNUMERIC (LEFT (LTRIM (colm), 1)) = 1' –
Teradata에서 정확한 오류 메시지를 추가했습니다. –