如何将Num1与Num2与num1-num2格式组合?

时间:2015-07-31 06:16:03

标签: php mysql mysqli

这就是我要做的事。

row,名为Price某些行包含一系列数字,例如200-300或650-700。

目前,我回复$row["Price"]

我正在尝试将包含范围的每一行显示为单个数字,例如650-700 row显示为675

我理解avg函数,但如何让它理解number1-number2的格式?

谢谢!

最终编辑:感谢大家的贡献。

我的最终解决方案是通过在Excel中使用excel中的确定符来创建PriceMinPriceMax列,并按照这样做。

谢谢!

3 个答案:

答案 0 :(得分:2)

因此,据我所知,您正在使用PHP并通过mySql访问您的数据?因此,在这种情况下,您的$row["Price"]包含String和“650-700”?

一种简单的方法是将这个字符串分成两部分并进行计算。例如:

$range = explode("-", $row["Price"]);
[convert string to int]
$avg = ($range[1]+$range[0]) / 2;

希望这有帮助

答案 1 :(得分:0)

  

有一排叫做Price。有些行包含一系列数字,例如200-300或650-700。

我认为你的意思是你有一个名为Price' and some rows have values from 200-300? And so the type of the Price`-col is varchar?

的col

您可以尝试substring第一个数字和第二个数字,然后将这些数字传递给avg函数,就像这样

select avg(SUBSTRING(PriceCol, 0, LOCATE('-', PriceCol) - 1, SUBSTRING(PriceCol, LOCATE('-', 'PriceCol') + 1)) from table;

select avg(SUBSTRING_INDEX('PriceCol', '-', 1), SUBSTRING_INDEX('PriceCol', '-', -1)) from table;

200-300设为avg(200,300)

注意语法错误但我现在没有时间查找正确的语法,稍后会编辑,但我认为你会得到猜测

修改:我认为我修复了语法,并添加了substring_index的示例,两者都是MySQL manual

答案 2 :(得分:0)

实际上,您应该更改数据库并将price列设为整数,并包含max_pricemin_price等列。或者您应该在PHP中执行此操作(使用str_split等函数并自行执行计算。

但是,只是为了完成和有趣,这里是一个全SQL解决方案:

SELECT 
     SUBSTR(`Price`, LOCATE("-",`Price`)+1) + 
     SUBSTR(`Price`, 1, LOCATE("-",`Price`)-1) 
     / 2;