Php 如何将Num1与Num2与Num1-Num2格式组合?
这就是我想做的Php 如何将Num1与Num2与Num1-Num2格式组合?,php,mysql,mysqli,Php,Mysql,Mysqli,这就是我想做的 有一个行,叫做价格某些行包含一系列数字,如200-300或650-700 目前,我回显$row[“Price”] 我试图将包含一个范围的每一行显示为一个数字,如650-700行显示为675 我理解avg函数,但如何让它理解我的number1-number2格式 谢谢 最后编辑:感谢大家的贡献 我的最终解决方案是使用excel中的determinator为表格创建一个PriceMin和PriceMax列,然后这样做 谢谢 有一种说法叫价格。有些行包含一系列数字,如200-30
有一个
行
,叫做价格
某些行包含一系列数字,如200-300或650-700
目前,我回显
$row[“Price”]
我试图将包含一个范围的每一行显示为一个数字,如650-700
行
显示为675
我理解avg
函数,但如何让它理解我的number1-number2
格式
谢谢
最后编辑:感谢大家的贡献 我的最终解决方案是使用excel中的determinator为表格创建一个
PriceMin
和PriceMax
列,然后这样做
谢谢
有一种说法叫价格。有些行包含一系列数字,如200-300或650-700
我想您的意思是有一个名为Price'的列,有些行的值是200-300?所以
Price`-col的类型是varchar
您可以尝试substring
第一个数字和第二个数字,并将它们传递给avg
函数,类似这样
select avg(SUBSTRING(PriceCol, 0, LOCATE('-', PriceCol) - 1, SUBSTRING(PriceCol, LOCATE('-', 'PriceCol') + 1)) from table;
或
使200-300
成为avg(200300)
注意语法错误,但我现在没有时间查找正确的语法,稍后将进行编辑,但我想您会猜到的
编辑:我想我修正了语法,还添加了带有
子字符串索引
的示例,对于这两个示例,请参见,您实际上应该更改数据库,将价格
列设为整数,并包括最高价格
和最低价格
等列。或者您应该在PHP中执行此操作(使用函数,如和,自己进行计算)
但是,为了完整和有趣,这里有一个全SQL解决方案:
SELECT
SUBSTR(`Price`, LOCATE("-",`Price`)+1) +
SUBSTR(`Price`, 1, LOCATE("-",`Price`)-1)
/ 2;
因此,据我所知,您正在使用
PHP
并通过mySql
访问数据。因此,在本例中,$row[“Price”]
包含一个带“650-700”的字符串
一种简单的方法是将该字符串分成两部分进行计算。例如:
$range = explode("-", $row["Price"]);
[convert string to int]
$avg = ($range[1]+$range[0]) / 2;
希望这对您有所帮助您应该更改您的表结构,并使用PriceMin和PriceMax字段(对于固定定价的项目,可能是PriceFixed,或者只有PriceMin,或者两个字段中的值相同)。这并不是计算平均值的方式。它认为您的意思是平均值=($range[1]+$range[0])/2;
啊,是的,你是对的,抱歉。我修复了它……当然,在计算之前,你还必须将字符串转换为int:)在PHP中,不需要显式类型转换。
$range = explode("-", $row["Price"]);
[convert string to int]
$avg = ($range[1]+$range[0]) / 2;