我有字段,有值類型store878。我想從select語句中獲得878個。我如何從select語句數如何只從字符串字段獲得數字mysql
select
store,
address
from
detail,
store_number
where
store (here i would like to have number) = store_mumber.id
我有字段,有值類型store878。我想從select語句中獲得878個。我如何從select語句數如何只從字符串字段獲得數字mysql
select
store,
address
from
detail,
store_number
where
store (here i would like to have number) = store_mumber.id
我沒有測試是爲了確保是作品:
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
但你真的應該考慮改變你的數據庫的結構。
不幸的是,'LOCATE()'只執行固定字符串匹配,而不是通配符或類似於正則表達式的匹配。然而,你的回答確實激勵着我想出一個可行的選擇,儘管它仍然是一個非常糟糕的主意,正如你所說的那樣。如果數字在字符串的末尾,那麼檢查以下結果:'SELECT CAST(REVERSE(CAST(REVERSE('haxor1337')AS UNSIGNED))AS UNSIGNED);'它的行爲如預期的(在此返回'1337'案件)。儘管如此,設計的根本問題應該得到解決。 – 2014-09-30 23:39:24
您的數據庫設計錯誤。您應該使用帶有ID的「商店」表格,而不是單獨編號的商店字段。 – 2014-09-30 20:52:27
這簡直太難看了。任何答案都不能解決根本問題。 – Linger 2014-09-30 20:53:21
如果你必須有字母數字......並假設文本/數字有一個固定長度,然後嘗試獲取字符串的一部分來分割出來。無論如何,我投給羅伯特H.建議。 – NKD 2014-09-30 20:55:03