찾다

 >  Q&A  >  본문

java - 如何解决where name like '%%' 当name 为null时,查询不到数据?

PHP中文网PHP中文网2802일 전1805

모든 응답(12)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-18 10:46:56

    선택

    으아악

    에서

    으아악

    어디

    으아악

    concat과 같은 이름(

    으아악

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

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 10:46:56

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

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:46:56

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

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

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:46:56

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

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:46:56

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


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

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 10:46:56

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

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 10:46:56

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

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:46:56

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

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

    으아악

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

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

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

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 10:46:56

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

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:46:56

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

    회신하다
    0
  • 취소회신하다