2012-07-20 81 views
0

由於客戶端的一些限制,我需要在一個mysql查詢中執行此操作。如何在mysql查詢中對數字部分進行計算

我有一個varchar領域,具有價值,如:3,050 wheels 我還有一個integer領域,具有價值:2

我需要查詢返回我6,100 wheels

我大概可以使用CONVERT將3,050轉換爲數字,但我不知道如何找到" "的索引,而且輸出再次需要使用逗號格式化,並與字符串連接在一起(non-數字)部分。

請幫忙。

回答

1

使用SUBSTRING_INDEX選擇字符串的相應部分,並FORMAT將數字轉換回字符串。

所有功能描述爲here

CONCAT(FORMAT(CONVERT(SUBSTRING_INDEX(f, ' ', 1), UNSIGNED) * g, 0), 
     ' ', 
     SUBSTRING_INDEX(f,' ',-1)) 
+0

謝謝,一個問題,我將如何處理超過一個的話嗎?像:'3,050個車輪和尖刺'?如果我只是說'-1'作爲索引,它只會抓住'spikes',我不能確定會有多少單詞 – Bluemagica 2012-07-20 05:14:03

+0

然後,您可能需要使用'LOCATE'和'SUBSTR'來獲取單詞部分。 – 2012-07-20 05:15:44

0

您可以使用SUBSTRINGCAST

SELECT CAST(SUBSTRING_INDEX(field1, ' ', -1) AS UNSIGNED)*field2 as result, FROM tableName ; 
0

這可能會爲你工作:

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

0

要檢查數量是有在該領域再使用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]'; 

希望這會爲你...

工作
0

嘗試此查詢

select 
    concat(convert(substring_index(fieldName, ' ', 1), decimal) * intField, 
    ',', substr(fieldName, length(substring_index(fieldName, ' ', 1))+1)) 
    as yourField 
    from tableName 
相關問題