SQL Server를 사용하는 새 Spring Boot 프로젝트가 있고 이전 프로젝트의 리포지토리 메서드에 대한 MySQL 기본 쿼리를 SQL Server 기본 쿼리로 바꿔야 합니다. 이는 조건이 표현식인 경우인 복잡한 쿼리입니다. SQL Server Management Studio에서 쿼리를 테스트하려고 하면 아래 이미지와 같은 오류가 표시됩니다. 여기에 이미지 설명을 입력하세요
이것은 리포지토리 메서드에서 MySQL을 사용하는 이전 기본 쿼리이며 이를 SQL Server로 바꾸고 싶습니다. 여기에 이미지 설명을 입력하세요 해결책을 찾도록 도와주세요. 미리 감사드립니다! !
이것은 귀하가 가지고 있는 것이며 귀하의 질문에 텍스트로 게시해야 하는 것입니다. 텍스트 형태로 귀하를 도와주려는 누군가가 검색하고 복사할 수 있습니다.
으아아아CASE는 TSQL의 표현식입니다. 다른 많은 언어와 마찬가지로 흐름 제어 구성이 아닙니다. "선택적" 필터를 사용하려면 CASE를 사용하여 "선택적" 속성을 올바르게 처리하는 부울 표현식을 구성해야 합니다. 일반적으로 CASE를 사용하면 다음과 같이 더 정교하게 수행할 수 있습니다.
으아아아여기서 CASE는 비교에서 테스트할 수 있는 값을 반환하는 데 사용됩니다. 0이나 1을 사용하는 데는 마법 같은 것이 없습니다. 모든 유형의 값을 사용하십시오.
따라서 CASE 표현식이 0(실제로는 1이 아님)을 반환하면 해당 행이 무시됩니다(결과 집합에서 제거됨).
쿼리가 실제로 애플리케이션 내에서 구성된다는 점을 고려하면 쿼리를 동적으로 작성하고 필요에 따라 매개변수를 추가하는 것을 고려해야 합니다. 이로 인해 데이터베이스 엔진이 더 효과적으로 최적화할 수 있는 보다 효율적인 쿼리가 생성될 수 있습니다. 또는 Kitchen Sink Discussion 및 Dynamic Search Criteria에 대한 Erland의 토론을 확인해 보세요. TBH는 누군가가 8개의 특정 필터 값에 대한 매개변수 추가를 피하기 위해
@num
를 패치워크로 사용한 것 같습니다. 판매자 이름과 매장 이름을 모두 필터링하고 싶은 경우에는 이 방법을 사용할 수 없습니다.