문제

그래서,

SELECT * FROM table WHERE col LIKE '%'

모든 것을 반환합니다. 쿼리를위한 와일드 카드가 있습니까?

SELECT * FROM table WHERE col = '*'

분명히 * 작동하지 않습니다. 와일드 카드를 원하는 위치를 표시하기 위해 거기에 넣었습니다. 내가 선택한 열에는 1과 12 사이의 정수가 포함되어 있으며 특정 숫자의 모든 레코드 또는 와일드 카드가있는 모든 레코드를 선택할 수 있기를 원합니다.

감사,

도움이 되었습니까?

해결책

와일드 카드를 사용할 수 있도록 기본적으로 =와 동일합니다.

이 두 쿼리는 동일한 결과를 반환합니다.

SELECT * FROM table WHERE col LIKE 'xyz';
SELECT * FROM table WHERE col='xyz';

같은 쿼리에서 '%'가 없으면 효과적으로 '='와 동일합니다.

정수 열에서 선택을하는 경우 in () 또는 연산자 사이의 사용을 고려해야합니다. 그러나 쿼리가 아닌 코드에서 처리 해야하는 두 가지 개별 조건이있는 것처럼 들립니다. 조건은 적어도 두 가지 다른 종류의 쿼리가 필요하다는 것을 지시하기 때문입니다.

편집 : 나는 Like와 =가 정상적인 험담 문자열 비교 사용에서만 비슷하다는 것을 명확히해야합니다. 당신은 확인해야합니다 MySQL 매뉴얼 동일하지 않은 상황 (예 : 언어 세트)이 있으므로 작동 방식에 대한 세부 사항.

다른 팁

모든 것을 선택하려면 왜 WHERE 절을 전혀 첨부합니까? 와일드 카드를 넣는 대신 조건부로 둡니다.

Like를 사용하는 이유는 =가 와일드 카드 지원을 제공하지 않기 때문입니다. 그렇지 않으면 같은 이유가 없습니다

SELECT * FROM table WHERE col RLIKE '.*'

즉, 정기적 인 발현.

Zombat의 대답은 훌륭하지만 그의 대답에서 당신이 정수를 선택하고 있다는 것을 알았습니다. 그는 ()와 () 사이에 언급했다. 다음은 이러한 구문을 사용하는 예와 정수 필드에 대한 다른 옵션을 사용하는 예입니다.

SELECT * FROM table WHERE col = 1;
SELECT * FROM table WHERE col BETWEEN 1 AND 12;
SELECT * FROM table WHERE col BETWEEN 6 AND 12;
SELECT * FROM table WHERE col <= 6;
SELECT * FROM table WHERE col < 6;
SELECT * FROM table WHERE col >= 6;
SELECT * FROM table WHERE col > 6;
SELECT * FROM table WHERE col <> 6;
SELECT * FROM table WHERE col IN (1,2,5,6,10);
SELECT * FROM table WHERE col NOT IN (1,2,5,6,10);

쿼리가 매개 변수라고 가정하면 사례 문이 적절할 것입니다.

select * from mytable
where col like case when @myvariable is null then % else myvariable end

어디에 @myvariable 값을 원하지 않으면 널입니다. 그렇지 않으면 통과하는 정수 값을 사용합니다.

다음과 같은 보고서를 작성하는 동안 다음과 같은 경우에 발생했습니다. 다음 보고서에 대한 저장된 절차를 구축했습니다. 내 해결책입니다. 이것이 당신이 염두에 두었던 것입니다 :)

set @p = "ALL";

질문:

select * from fact_orders
where
dim_country_id = if(@p is null or @p="ALL", dim_country_id, @p)
limit 10
;

값이 범위 (1,12)에있는 경우 :

col> = 5 및 col <= 5 인 테이블에서 *를 선택하십시오. // 이것은 col = 5와 같습니다

col> = 0이고 col <= 12 인 테이블에서 *를 선택하십시오. // 이것은 col = 모든 값과 같습니다

동일한 라인은 2 개의 매개 변수를 적절하게 선택하여 두 효과를 생성 할 수 있습니다. 열에서 특정 값을 확인하거나 해당 열을 완전히 무시하는 두 가지 방법으로 작동 해야하는 단일 준비 된 진술이 필요할 때 비슷한 문제에 직면했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top