sqlite는 선택에서 모든 종류의 IF (조건) 문을 지원합니까?


79

sqlite는 select 문에서 SQL 함수 "if"를 지원합니까?

예를 들면

select if( length( a ) > 4 , a , ' ') as b
from foo

길이가 4 자 이상이면 a를 반환합니다. 그렇지 않으면 ''를 b로 반환합니다.

선택 조건을 지원하는 경우 구문은 무엇을 사용해야합니까?

http://sqlite.org/lang_corefunc.html 을 확인 했지만 볼 수 없습니다.

답변:


129

케이스 표현식을 참조하십시오 .

CASE 표현식은 다른 프로그래밍 언어에서 IF-THEN-ELSE와 유사한 역할을합니다.

예를 들어

select case when length(a) > 4 then a else '' end as b
from foo

1
왜 그들이 C의 삼항 연산자와 같은 간단한 일에 대해 더 짧은 구문을 가질 수 없는지 모르겠습니다. 여러 case 문을 함께 묶을 때 쿼리가 얼마나 오래 걸릴 수 있는지 상상해보십시오!
Michael

18

이에 대한 사례 를 사용할 수 있습니다 .

select case when length(a)>4 then a else ' ' end from foo;

이상한; iceweasel에서는 링크가 작동하지 않습니다. 문서를 찾을 수 없음 오류 (/lang_5Fexpr.html)가 발생합니다. 주소 표시 줄의 주소는 정확합니다 (... / lang_expr.html). 그 이유가 확실하지 않습니다. 주소는 정확하지만 새로 고침이 작동하지 않습니다. 페이지를 가져 오려면 주소 표시 줄에 Enter 키를 눌러야합니다.
Inshallah

markdown은 내가 생각하기에 밑줄을 좋아하지 않습니다. snurl 리디렉터를 사용하도록 링크를 변경했습니다
Paul Dixon

리디렉터를 사용해서는 안됩니다. [직접 URL이 이제 있습니다
mmmmmm

0

3.32.0 버전부터 iif (X, Y, Z) 사용할 수 있습니다 .

select iif( length( a ) > 4 , a , ' ') as b
from foo

codumentation에서 :

iif (X, Y, Z) 함수는 CASE 표현식 "CASE WHEN X THEN Y ELSE Z END"와 논리적으로 동일하며 동일한 바이트 코드를 생성합니다.


어떤 이유로 작동하지 않습니다. 실행이 완료되었지만 오류가 발생했습니다. 결과 : 없음 같은 기능 : IIF
알렉산더 Tverdohleb

@AlexanderTverdohleb sqlite 버전은 무엇입니까? SELECT sqlite_version();작동하지 않는 명령문을 실행하려고 한 것과 동일한 방식으로 실행 해보십시오 .
SteakOverflow 2010 년

문제는 SQLite 버전에서 발생했습니다. 나는 그것을 업데이트 기능이 제대로 @ SteakOverflow 작동합니다.
알렉산더 Tverdohleb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.