Progress DB SQL의 연산자처럼
-
19-09-2019 - |
문제
나는 진행중인 SQL에서 이와 같은 일을하려고 노력하고 있습니다 (이것은 포스트 그레가 아닙니다!)
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
그러나 진행 상황은 같은 연산자를 지원하지 않습니다. INSTR
작업을 수행 할 수있는 것처럼 보이지만 진행중인 DB에서 지원되지 않는 진행 확장입니다. 표준 ODBC 기능을 사용하여이를 달성하는 또 다른 방법이 있습니까?
감사
해결책
아니요 LIKE
진행 상황 4GL의 연산자. (이있다 LIKE
키워드이지만 다른 것에 사용됩니다.) 대신 사용해야합니다. MATCHES
또는 CONTAINS
운영자. SQL 인터페이스를 사용하여 진행 한 적이 없지만 동일 할 수 있습니다.
그래서 당신은 시도 할 수 있습니다 :
SELECT
CASE WHEN code MATCHES '*foo*' THEN 'Y' ELSE 'N' END as foo
FROM
bar
메모 - MATCHES
용도 *
대신 와일드 카드를 위해 %
.
또는:
SELECT
CASE WHEN code CONTAINS 'foo' THEN 'Y' ELSE 'N' END as foo
FROM
bar
다른 팁
방금이 질문을 발견하고 여전히 문제가있는 사람에게 SquirrelsQL 클라이언트를 사용하는 것이 좋습니다. 포함 된 것 같습니다
성냥 (좋아하는 것과 동일한 구문)으로 시도 할 수 있으며 아마도 효과가 있습니다.
10.0을 사용하고있는 Progress의 어떤 버전입니까? 10.1? 10.2?
4GL 세션 내에서 임베디드 SQL-89를 사용하고 있습니까? 아니면 ODBC/JDBC 연결을 통해 SQL-92를 사용하고 있습니까? "드라이버"와 악기를 참조하기 때문에 SQL-92를 사용하는 것처럼 들립니다.
어쨌든 SQL과 같은 것은 없습니다. 당신이 원하는 것을 할 수있는 악기와 찾기가 있습니다.
경기는 4GL 키워드로만 사용할 수 있습니다. SQL로 사용하려면 임베디드 SQL-89를 사용해야하지만 올바른 마음 속에 아무도 4GL 세션 내에서 SQL을 코딩하지 않습니다. 마케팅 확인란으로 만 있으며 4GL 코드를 작성하는 것은 완전히 불가능한 방법입니다.