2013-02-01 39 views
2

我有這個表,命名前景:正則表達式在MySQL查詢做左連接

+---------+-------------+ 
| Name | PhoneNumber | 
+---------+-------------+ 
|John  | 08199999 | 
|Viona | 08332222 | 
+---------+-------------+ 

,另一方面我有這個表也叫SMSD:

+-----------------+---------------+ 
| Message   | PhoneNumber | 
+-----------------+---------------+ 
|Hello World!  | +628199999 | 
|Hi World   | +628332222 | 
+-----------------+---------------+ 

現在我需要在SMSD表電話號碼上始終使用國家代碼前綴時,根據PhoneNumber:Prospects.PhoneNumber = SMSD.PhoneNumber執行LEFT JOIN。

謝謝!

+0

是固定值的長度嗎?例如'+ 628199999'和'08199999'以及模式? –

+0

您可以使用的唯一的模式是前綴。總是以SMSD表上的+62開始。數字的長度是動態的。對於一些GSM運營商有12位數字號碼,但其他可能有11位甚至10位數字。 –

回答

2
select * from Prospects 
left join SMSD on substring(SMSD.PhoneNumber, 4) = substring(Prospects.PhoneNumber, 2) 

(未測試)

這應該刪除從SMSD電話號碼的國家代碼前綴和前景的電話號碼進行加盟前的前導零。

0
SELECT * 
FROM prospects AS t1 
JOIN SMSD AS t2 
ON 
CONCAT(@prefix, SUBSTRING(t1.PhoneNumber, 2)) = t2.PhoneNumber 
WHERE t1.PhoneNumber LIKE @prefix%