2012-11-27 2 views
0

내가 가입하고 싶은 테이블이 2 개 있습니다. 문제는 데이터에 트리밍이 필요하다는 것입니다.MySQL 쿼리 내에서 preg_replace 또는 regex를 사용할 수 있습니까?

== Product Description 

id    sku     price 

1    674_orange   45.99 
2    645_black   59.99 
5    592_rubyred   69.99 

== Product Attributes 

id   sku  description 

11   674  lorem ipsum long text description of 674 
22   645  lorem ipsum keywords for this item 
33   592  lorem ipsum colours on this item 

SKU에서이 테이블을 가입하려고합니다. 그러나 나는 LIKE 또는 %이 충분히 정확할 것이라고 생각하지 않기 때문에 교체를해야합니까?

+0

가능한 중복 (http://stackoverflow.com/questions/1705437/is-there [? PHP의 레그 \ _replace의 MySQL의 상당 있나요]가 -a-mysql-equivalent-of-phps-preg-replace) –

답변

2

사용

select * 
from description d 
join attributes a on a.sku = substring(sku, 1, locate('_', sku)-1) 

locate('_', sku)

substring(sku, 1, locate('_', sku)+1)sku에서 문자열을 추출하여 문자열의 _의 위치를 ​​가져옵니다. 부분 문자열은 1에서 시작하여 _보다 앞의 위치에서 끝납니다. 그래서 -1이 사용됩니다.

SQLFiddle demo

+0

고마워요, 설명해 주시겠습니까? 정말 고맙습니다. – TheBlackBenzKid

1

이 시도 :

SELECT * FROM ProductDescription pd 
INNER JOIN ProductAttributes pa ON SUBSTRING_INDEX(pd.sku, '_', 1) = pa.sku ; 
+0

처리되었습니다. 답변 해주셔서 감사합니다 – TheBlackBenzKid

관련 문제