2013-08-03 2 views
1

Oracle에서 LIKE 연산자는 와일드 카드를 사용하거나 사용하지 않고 사용할 수 있습니다. 예를 들어 "name like 'SMITH'"는 name 열이 정확히 'SMITH', 및 "where like 'SMITH %'"와 같은 행을 반환하며 이름 열이 'SMITH'로 시작하고 0이 뒤에 오는 행을 반환합니다 또는 다른 문자들.와일드 카드가없는 Teradata LIKE 연산자?

그러나 Teradata에서 "SMITH '와 같은 이름은 아무 것도 반환하지 않습니다. 와일드 카드없이 ANSI 표준이 LIKE 연산자에 대한 동작을 지정하지 않습니까?

부울 대수는 'SMITH'like SMITH가 맞다고 말합니다. 오라클은 이런 식으로 행동합니다. Teradata는 그렇지 않습니다. LIKE 연산자가 와일드 카드 사용 여부와 상관없이 작동 할 수 있도록 Teradata SQL을 조정할 수 있습니까?

+0

"LIKE 연산자가 와일드 카드 사용 여부와 상관없이 작동 할 수 있도록 Teradata SQL을 조정할 수 있습니까?" - 예 : 존재하지 않으면 와일드 카드를 추가하십시오. –

+2

부울 대수가 언제 그런 말을 했습니까? 나는 그 이야기를 놓쳤을 것입니다. TED에 있었 니? – Hogan

답변

3

이 내가 각각의 모든 테라 데이타 자료에 무엇을 얻을 수 있습니다 :

BTEQ -- Enter your SQL request or BTEQ command: 
SELECT 
    CASE WHEN 'smith' LIKE 'smith' THEN 'equal' ELSE 'not equal' END, 
    CASE WHEN 'smith' LIKE 'smith ' THEN 'equal' ELSE 'not equal' END, 
    CASE WHEN 'smith' = 'smith ' THEN 'equal' ELSE 'not equal' END; 


*** QUERY completed. One ROW FOUND. 3 COLUMNS returned. 
*** Total elapsed TIME was 1 SECOND. 

<CASE expression> <CASE expression> <CASE expression> 
------------------ ------------------ ------------------ 
equal    not equal   equal 

을 그리고 이것은 확실히 100 % 표준 SQL을 준수합니다.

아마도 CHAR 열 또는 VARCHAR 열과 그 안에 몇 개의 후미 공백을 비교했을 것입니다. Oracle은 비교하기 전에 공백으로 짧은 문자열을 자동으로 채 웁니다 (표준 SQL에 따라 잘못됨). 즉 등호 (=)를 사용한 비교와 유사합니다.