2014-09-30 38 views
0

我有字段,有值類型store878。我想從select語句中獲得878個。我如何從select語句數如何只從字符串字段獲得數字mysql

select 
    store, 
    address 
from 
    detail, 
    store_number 
where 
    store (here i would like to have number) = store_mumber.id 
+2

您的數據庫設計錯誤。您應該使用帶有ID的「商店」表格,而不是單獨編號的商店字段。 – 2014-09-30 20:52:27

+0

這簡直太難看了。任何答案都不能解決根本問題。 – Linger 2014-09-30 20:53:21

+0

如果你必須有字母數字......並假設文本/數字有一個固定長度,然後嘗試獲取字符串的一部分來分割出來。無論如何,我投給羅伯特H.建議。 – NKD 2014-09-30 20:55:03

回答

1

我沒有測試是爲了確保是作品:

SELECT store, address 
FROM detail d 
INNER JOIN store_number s 
    ON CAST(SUBSTRING(d.store, LOCATE('%[0-9]%', d.store)) AS int) = s.id 

但你真的應該考慮改變你的數據庫的結構。

+0

不幸的是,'LOCATE()'只執行固定字符串匹配,而不是通配符或類似於正則表達式的匹配。然而,你的回答確實激勵着我想出一個可行的選擇,儘管它仍然是一個非常糟糕的主意,正如你所說的那樣。如果數字在字符串的末尾,那麼檢查以下結果:'SELECT CAST(REVERSE(CAST(REVERSE('haxor1337')AS UNSIGNED))AS UNSIGNED);'它的行爲如預期的(在此返回'1337'案件)。儘管如此,設計的根本問題應該得到解決。 – 2014-09-30 23:39:24