由于我的客户端有一些限制,我需要在一个mysql查询中执行此操作。
我有一个varchar
字段,其值类似于:3,050 wheels
我有另一个integer
字段,其值为:2
我需要查询才能返回6,100 wheels
。
我可以使用CONVERT
将3,050转换为数字,但我不知道如何找到" "
的索引,而且输出需要再次使用逗号进行格式化并连接返回字符串(非数字)部分。
请帮忙。
答案 0 :(得分:1)
使用SUBSTRING_INDEX
选择字符串的相应部分,使用FORMAT
将数字转换回字符串。
所有功能都描述为here。
CONCAT(FORMAT(CONVERT(SUBSTRING_INDEX(f, ' ', 1), UNSIGNED) * g, 0),
' ',
SUBSTRING_INDEX(f,' ',-1))
答案 1 :(得分:0)
SELECT CAST(SUBSTRING_INDEX(field1, ' ', -1) AS UNSIGNED)*field2 as result, FROM tableName ;
答案 2 :(得分:0)
这可能对您有用:
CONCAT( FORMAT( CAST( REPLACE( LEFT( field1, locate( ' ', field1 )-1 ), ',', '' ) AS UNSIGNED ) * field2, 0 ),
MID( field1, LOCATE( ' ', field1 )))
它应该在field1
中的初始数值后重新附加任意数量的文本。如果3,500 wheels and spikes
包含7,000 wheels and spikes
,则field2
应成为2
。
答案 3 :(得分: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]';
希望这对你有用......
答案 4 :(得分:0)
尝试此查询
select
concat( convert(substring_index(fieldName, ' ', 1 ), decimal) * intField,
',', substr(fieldName, length(substring_index(fieldName, ' ', 1))+1))
as yourField
from tableName