"="에 대한 mysql 와일드 카드 - 하나가 있습니까?
문제
그래서,
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 개의 매개 변수를 적절하게 선택하여 두 효과를 생성 할 수 있습니다. 열에서 특정 값을 확인하거나 해당 열을 완전히 무시하는 두 가지 방법으로 작동 해야하는 단일 준비 된 진술이 필요할 때 비슷한 문제에 직면했습니다.