由于我的客户的一些限制,我需要在单个 mysql 查询中执行此操作。
我有一个varchar
字段,其值如下:3,050 wheels
我有另一个integer
字段,其值:2
我需要查询返回我6,100 wheels
。
我可能可以CONVERT
用来将 3,050 转换为数字,但我不知道如何找到 的索引" "
,而且输出再次需要用逗号格式化并与字符串(非数字)部分连接起来。
请帮忙。
由于我的客户的一些限制,我需要在单个 mysql 查询中执行此操作。
我有一个varchar
字段,其值如下:3,050 wheels
我有另一个integer
字段,其值:2
我需要查询返回我6,100 wheels
。
我可能可以CONVERT
用来将 3,050 转换为数字,但我不知道如何找到 的索引" "
,而且输出再次需要用逗号格式化并与字符串(非数字)部分连接起来。
请帮忙。
用于SUBSTRING_INDEX
选择字符串的适当部分,FORMAT
并将数字转换回字符串。
所有的功能都在这里描述。
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
。所以3,500 wheels and spikes
应该变成7,000 wheels and spikes
if field2
contains 2
。
要检查字段中是否存在数字,然后使用MySQL 正则表达式方法,查找索引,您可以使用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