0

由于我的客户的一些限制,我需要在单个 mysql 查询中执行此操作。

我有一个varchar字段,其值如下:3,050 wheels 我有另一个integer字段,其值:2

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

我可能可以CONVERT用来将 3,050 转换为数字,但我不知道如何找到 的索引" ",而且输出再次需要用逗号格式化并与字符串(非数字)部分连接起来。

请帮忙。

4

5 回答 5

1

用于SUBSTRING_INDEX选择字符串的适当部分,FORMAT并将数字转换回字符串。

所有的功能都在这里描述。

CONCAT(FORMAT(CONVERT(SUBSTRING_INDEX(f, ' ', 1), UNSIGNED) * g, 0),
       ' ',
       SUBSTRING_INDEX(f,' ',-1))
于 2012-07-20T05:08:12.343 回答
0

您可以使用SUBSTRINGCAST

SELECT  CAST(SUBSTRING_INDEX(field1, ' ', -1) AS UNSIGNED)*field2 as result,  FROM tableName ;
于 2012-07-20T05:00:43.003 回答
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 spikesif field2contains 2

于 2012-07-20T05:14:32.367 回答
0

要检查字段中是否存在数字,然后使用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]';

希望这对你有用...

于 2012-07-20T05:19:34.503 回答
0

试试这个查询

    select 
    concat( convert(substring_index(fieldName, ' ', 1 ), decimal) * intField,
    ',', substr(fieldName, length(substring_index(fieldName, ' ', 1))+1)) 
     as yourField
    from tableName
于 2012-07-20T05:45:30.410 回答