我知道那裏已經有一些相同的問題了,但是這個問題讓我很困惑。只在sql上選擇數字值
我有這個疑問:
SELECT
CASE
WHEN COALESCE(substring(location_name FROM '[0-9]+'), location_name) != ''
THEN COALESCE(substring(location_name FROM '[0-9]+'), location_name)
ELSE '1'
END AS sequence
FROM LOCATION
我想從查詢得到的是:
- 如果
location_name
不包含任何數值,然後返回1
- 如果
location_name
包含數字值,則只獲取最後一個數值(在字符串後),即 即c2傳送帶10應僅返回10
- 如果
location_name
只包含數值,然後返回1
但我得到的是這樣的:
location_name expected result what I get
using [0-9] using [0-9]+
carousel 1 1 1 1
carousel 2 2 2 2
carousel 3 3 3 3
carousel 12 12 1 12
bottom banner 1 bottom banner bottom banner
c2 carousel 1 1 2 2
c2 carousel 3 3 2 2
59977 1 5 59977
是否有可能做到這一點的SQL?
mysql'regex'只返回'Boolean'你不能用正則表達式替換/過濾文本,你應該創建自定義的字符串操作函數來提取結果 – Girish 2014-12-11 06:06:29
看起來像http://stackoverflow.com/q/5651949/ 4099598。 – 2014-12-11 06:11:41
看看我的答案。我認爲這正是你想要的。 – Veera 2014-12-11 07:10:05