java - 如何解决where name like '%%' 当name 为null时,查询不到数据?
PHP中文网
PHP中文网 2017-04-18 10:44:56
0
12
1804
PHP中文网
PHP中文网

认证0级讲师

모든 응답(12)
巴扎黑

선택

으아악

에서

으아악

어디

으아악

concat과 같은 이름(

으아악

이름에 대한 문제 해결을 작성했습니다. 다른 하나는 직접 확인해 보세요. 최선의 해결 방법이 아닐 수도 있습니다

迷茫

반드시 SQL이 아닌 비즈니스 로직으로 작성할 수 있습니다

大家讲道理

데이터베이스 프레임워크가 사용되는지는 모르겠습니다. 그렇다면 일반적으로 해당 솔루션이 있습니다.
예를 들어 mybatis에서는 iftest를 사용하여 like 문을 실행해야 하는지 여부를 결정할 수 있습니다.

또 다른 방법은 IF(expr1, expr2, expr3), IF ELSE 등 데이터베이스 자체의 기능을 이용하는 것입니다.

Peter_Zhu

프런트 엔드에 입력 매개변수가 없는 경우 이 필드의 결과를 쿼리해야 하는 이유는 무엇입니까? 이는 비즈니스 로직을 위반하지 않습니까?

Peter_Zhu

where IFNULL(name, '') like'%xx%' and IFNULL(method, '') like '%xx%'
namenull이고 이를 empty string로 변환하면 %%이 일치합니다.


그러나 가장 좋은 방법은 SQL을 사용하여 논리적 판단을 추가하는 것입니다. 변경 사항은 매우 적어야 하며 코드 몇 줄이면 완료됩니다. 질문자는 @家菜菜 의 SQL을 보고 where 1=1 조건을 추가하면 if 조건에 조건을 추가하는 것이 매우 쉽습니다.

左手右手慢动作

비즈니스 로직 계층에서 작성하는 것이 가장 좋습니다(이 계층이 수행해야 하는 작업). 데이터베이스 계층에서는 이러한 작업을 처리하지 마십시오. 이는 매우 불합리하고 비효율적입니다.

左手右手慢动作

간단한 방법은 테이블의 null 값을 ''로 변환하는 것입니다.
where ifnull(name,'') like'%%' and ifnull(method,'') like '%%'
효율성을 고려하지 않는다면 괜찮습니다

Ty80

질문자는 단순히 인터페이스의 쿼리 조건을 SQL 문의 Where 조건에 연결하기를 원합니다. 이는 프로그램 처리에 있어서 매우 편리하지만, SQL이 있기 때문에 이를 수행하지 않는 것이 가장 좋습니다. 주사 위험.

내부 애플리케이션이라면 성능을 고려하면 이 매개변수 없이 해당 where 절을 철자하지 않는 것이 좋습니다. Java인 경우 다음과 같이 작성할 수 있습니다.

으아악

*가정은 다음과 같습니다.

  1. nameStr 및 methodStr은 각각 인터페이스에서 얻은 사용자 입력 콘텐츠입니다. 사용자가 입력하지 않으면 결과는 null 대신 빈 문자열이 됩니다

  2. xxxxxx는 다른 조건이 없으면 "where" 문자열 자체를 처리해야 합니다*

刘奇

데이터베이스 기본값이 null이거나, 얻은 값이 null인 경우 nu로 변경합니다. .

Peter_Zhu

여기서 이름='' 또는 메소드 ='' 또는 '%%'와 같은 이름 및 '%%'와 같은 메소드

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿