2014-09-11 2 views
1

불투명 한 질문에 죄송합니다. 정확하게 묻는 법을 모르겠습니다. 내가 설명 할께. mySQL에서 일부 행을 검색하고 싶습니다. 이 형식은 "product1"(텍스트 및 숫자)입니다. 내 테이블에있는 동안. "제품"으로 시작하는 다른 행이 있습니다. 그러나 그들은 숫자가 뒤따라 있지 않습니다.특정 텍스트 형식으로 행을 선택하는 방법은 무엇입니까?

다음은 내 테이블입니다.

select * from product_db where key like 'product%' 

코드를 실행 한 후 :

**product_db** 
    +----------+-------+ 
    | key | value | 
    +----------+-------+ 
    | product1 | 100 | 
    +----------+-------+ 
    | product2 | 184 | 
    +----------+-------+ 
    | product3 | 170 | 
    +----------+-------+ 
    | productA | 210 | 
    +----------+-------+ 
    | productB | 100 | 
    +----------+-------+ 

는 MySQL의입니다. 모든 행이 나타납니다. 모두가 "제품"으로 시작하기 때문입니다. 번호가 뒤에 오는 처음 3 행만이으로 표시됩니다. 어떻게해야 mySQL에서 명령을 작성할 수 있습니까?

답변

3

당신은 regex을 사용해야합니다

select * from product_db where key REGEXP '^product[0-9]+$'; 
+0

그것은 근처입니다. 그러나 또 다른 문제가 발생했습니다. 내 실제 테이블에는이 형식의 다른 행도 있습니다. 예 : item1, item2, item3. 그리고 당신의 코드'select * from product_db를 실행할 때 key REGEXP '[product] [0-9] + $';'. 그 "itemX"도 나타납니다! – Wilf

+0

Regex, 편집,이 새로운 것을 사용해보십시오 .. – rikpg

+0

그것은 작동합니다. 고맙습니다. – Wilf

1
SELECT 'product1' REGEXP '[product][0-9]'; 
+------------------------------------+ 
| 'product1' REGEXP '[product][0-9]' | 
+------------------------------------+ 
|         1 | 
+------------------------------------+ 
1 row in set (0.01 sec) 

SELECT 'productA' REGEXP '[product][0-9]'; 
+------------------------------------+ 
| 'productA' REGEXP '[product][0-9]' | 
+------------------------------------+ 
|         0 | 
+------------------------------------+ 
1 row in set (0.00 sec) 
관련 문제