如何在mysql查询中对数字部分进行计算
问题描述:
由于客户端的一些限制,我需要在一个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