where (1) 의미가 뭔지 ?

where (1) 의미가 뭔지 ?

QA

where (1) 의미가 뭔지 ?

본문

https://sir.kr/qa/149890 에 untitled 님이 두 번째 적으신 소스 7라인에서 

 

where (1) 는 어떤 의미인지 궁금합니다.

 

 

이 질문에 댓글 쓰기 :

답변 4

php의 while(1) { }  하고 같다고 보면 됩니다. 항상 true 가 되어 실행되죠

밑에 답변이 달린거 보니 설명이 부족했나 봅니다.
php  에서
if 조건절
실행문

sql 에서
select 실행문  where 조건절

if 문에서 조건절이 없으면 에러가 나듯이
where 에도 조건절이 없으면 에러가 납니다.

보통은 where 1 로 많이 씁니다.
where (1) 또는 where 1 은 true 로 인식되어 select 실행문이 항상 실행되죠

예를 들면 회원검색에서 남자만 검색한다면
$where = " and sex = 'M' "
"select * from table where " +$where;
이런 경우 where and sex = 'M' 이 되어 에러가 나죠
이걸 막기 위해 select 실행문이 항상 실행되면서 에러가 안나도록 하는 겁니다.
"select * from table where 1 " + $where;

조건절이 추가 될수 있는 경우를 대비하여 where (1) 로 했다면 보시면 됩니다.
조건절이 필요없는 경우라면 where 1 을 굳이 넣을 필요가 없지요.

참고로

Where (1) 은 MySql에서만 유효합니다.

 

Oracle에서는 관계연산자가 부적합하다고 나옵니다.

 

다른 DB의 접근에 좀더 유연하게 사용하려면

 

where ( 1=1) 

로 사용하는게 더 좋습니다.

 

Where (1) 의 방식은

님의 의견과 같이

 

조건에 따라 and 절을 추가할때 유용합니다.

 

비슷한구문은 GnuBoard 기본엔진에서도 발견할수있습니다.

 

/bbs/list.php 에서

 

$sql_search = get_sql_search($sca, $sfl, $stx, $sop);

 

의 문장에 사용된

 

get_sql_search() 를 살펴보면

 

중간에 return 0 이 등장합니다.

 

비교연산자의 

1은 

PHP / MySql / JavaScript 등에서 '참(true)'로 사용될수있습니다.

 

0은  '거짓(false)' 로 인식됩니다. 

 

비교연산자에서 1 / 0 의 값을 이용하여 비교하는 구문을 작성하면

코드의 사이즈나 성능개선에 도움이 될겁니다.

 

 

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 14,946
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT