2015-04-02 27 views
0

我有一個包含地址的表。我想執行一個查詢來選擇數值匹配的行。如何在MySQL查詢中從文本數據中提取數字值

address1  postcode 
13 Some Road SW1 1AA 
House 5   G3 7L 

e.g

select * from addresses where numeric(address1)=13 and numeric(postcode)=11 

^^這將在第一行

select * from addresses where numeric(address1)=5 and numeric(postcode)=37 

^^這將匹配第二排

這是可能的匹配嗎?

+0

對於你的'address1'字段,你可以使用'LIKE',但是這對你的郵編沒有任何幫助。你想達到什麼目的? – Cfreak 2015-04-02 14:39:38

+0

@Cfreak謝謝你的回覆。是的,地址可能是「15號房號,3號街道」,在這種情況下,我需要的數字值爲153.我試圖確定客戶帳戶是否與交付地址匹配。匹配地址和郵政編碼的數字方面似乎是一種合理可靠的方式。信用卡公司匹配帳單地址的方式相同 – Chris 2015-04-02 14:46:08

+0

該方法似乎不可靠。當然,有很多地址會發生共享相同的街道號碼和相同數量的郵政編碼。在美國,這絕對是真的。我的建議是檢查整個地址。 – Cfreak 2015-04-02 19:25:30

回答

0
select * from addresses where address1 REGEXP '(13)' and postcode REGEXP '(11)'; 
+0

謝謝,但這不起作用。例如,如果地址是「House 10,On 10th Street」,那麼這與1510 – Chris 2015-04-02 15:42:21

+0

不符。在這種情況下,使用這個「WHERE address1 REGEXP'(15 | 10)';'將100% – 2015-04-02 16:41:10

1

是的,這是可能的。您可以編寫一個函數,該函數使用正則表達式將該字段中的所有非數字字符替換爲空字符,以便結果將僅爲該函數返回的數字字符,然後對該函數進行過濾。

您可能會感興趣於此stackoverflow question和這blog post。請參閱mysql-udf-regexp