这就是我要做的事。
有row
,名为Price
。 某些行包含一系列数字,例如200-300或650-700。
目前,我回复$row["Price"]
。
我正在尝试将包含范围的每一行显示为单个数字,例如650-700
row
显示为675
。
我理解avg
函数,但如何让它理解number1-number2
的格式?
谢谢!
最终编辑:感谢大家的贡献。
我的最终解决方案是通过在Excel中使用excel中的确定符来创建PriceMin
和PriceMax
列,并按照这样做。
谢谢!
答案 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?
您可以尝试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_price
和min_price
等列。或者您应该在PHP中执行此操作(使用str_split
等函数并自行执行计算。
但是,只是为了完成和有趣,这里是一个全SQL解决方案:
SELECT
SUBSTR(`Price`, LOCATE("-",`Price`)+1) +
SUBSTR(`Price`, 1, LOCATE("-",`Price`)-1)
/ 2;