由於客戶端的一些限制,我需要在一個mysql查詢中執行此操作。如何在mysql查詢中對數字部分進行計算
我有一個varchar
領域,具有價值,如:3,050 wheels
我還有一個integer
領域,具有價值:2
我需要查詢返回我6,100 wheels
。
我大概可以使用CONVERT
將3,050轉換爲數字,但我不知道如何找到" "
的索引,而且輸出再次需要使用逗號格式化,並與字符串連接在一起(non-數字)部分。
請幫忙。
由於客戶端的一些限制,我需要在一個mysql查詢中執行此操作。如何在mysql查詢中對數字部分進行計算
我有一個varchar
領域,具有價值,如:3,050 wheels
我還有一個integer
領域,具有價值:2
我需要查詢返回我6,100 wheels
。
我大概可以使用CONVERT
將3,050轉換爲數字,但我不知道如何找到" "
的索引,而且輸出再次需要使用逗號格式化,並與字符串連接在一起(non-數字)部分。
請幫忙。
使用SUBSTRING_INDEX
選擇字符串的相應部分,並FORMAT
將數字轉換回字符串。
所有功能描述爲here。
CONCAT(FORMAT(CONVERT(SUBSTRING_INDEX(f, ' ', 1), UNSIGNED) * g, 0),
' ',
SUBSTRING_INDEX(f,' ',-1))
這可能會爲你工作:
CONCAT(FORMAT(CAST(REPLACE(LEFT(field1, locate(' ', field1)-1), ',', '') AS UNSIGNED) * field2, 0),
MID(field1, LOCATE(' ', field1)))
應該在field1
初始數值後,再追加任意數量的文本。如果field2
包含2
,那麼3,500 wheels and spikes
應該變成7,000 wheels and spikes
。
要檢查數量是有在該領域再使用MySQL Regular Expression Method,找到索引你可以使用SUBSTRING_INDEX並可以進一步計算進行,如
SELECT CONVERT(
CONCAT(
SUBSTRING_INDEX(field,",",1),
SUBSTRING_INDEX(
SUBSTRING_INDEX(field,",",-1), " ", 1)
), UNSIGNED) AS NO
FROM table_name
WHERE field REGEXP '[0-9]';
希望這會爲你...
工作嘗試此查詢
select
concat(convert(substring_index(fieldName, ' ', 1), decimal) * intField,
',', substr(fieldName, length(substring_index(fieldName, ' ', 1))+1))
as yourField
from tableName
謝謝,一個問題,我將如何處理超過一個的話嗎?像:'3,050個車輪和尖刺'?如果我只是說'-1'作爲索引,它只會抓住'spikes',我不能確定會有多少單詞 – Bluemagica 2012-07-20 05:14:03
然後,您可能需要使用'LOCATE'和'SUBSTR'來獲取單詞部分。 – 2012-07-20 05:15:44