ホームページ >バックエンド開発 >PHPチュートリアル >mysqlを修正するにはどうすればよいですか?
SELECT (SELECT REPLACE('500x1x10','x','*') AS a)/5000; 这个结果得到0.1,但是实际应该是1,怎么去改正?
文字列形式の式は評価されません
mysql には類似したものはありませんeval 関数。独自の
を作成できます。たとえば、
SELECT substring_index(a,'*',1) * substring_index(substring_index(a,'*',2) , '*',-1) * substring_index(substring_index(a,'*',3),'*',-1)
from (select REPLACE('500x1x10','x','*') AS a ) t
ですが、普遍的な意味はありません
mysql フィールドに 500x1x10 の文字列が格納されているが、計算する場合、計算を実行する前に x を * に置き換える必要があります。
クエリができるようになると、php で計算するのがずっと簡単になります。
SELECT process.fid,SUM(CASE WHEN (product.box_product_dimensions/5000)>box_shipping_weight THEN product.box_product_dimensions/5000 ELSE box_shipping_weight END ) AS sumweight, (CASE WHEN (product.box_product_dimensions/5000)>box_shipping_weight THEN product.box_product_dimensions/5000 ELSE box_shipping_weight END ) AS weight FROM `process` LEFT JOIN product ON product.pid=process.pid WHERE 1 AND process.receiver_id>0 AND statu="3" AND property="转仓单" AND isover="N" GROUP BY fid
product.box_product_dimensions には、14x12x36 の形式で文字列が格納されます。計算する必要がある場合は、14*12*36
#4 のコードは問題とは完全に異なります。あなたが投稿したものは同じではありません
#4 のコードは投稿した問題と同じではありません
内の式を参照することは不可能であると明確に言いました。自分で関数を作成すると、行文字列
SELECT process.sku,process.comment2,SUM(CASE WHEN (SELECT (SELECT SUBSTRING_INDEX(box_product_dimensions,'x',1))*(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(box_product_dimensions,'x',2),'x',-1))*(SELECT SUBSTRING_INDEX(box_product_dimensions,'x',-1))/5000)>box_shipping_weight THEN (SELECT (SELECT SUBSTRING_INDEX(box_product_dimensions,'x',1))*(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(box_product_dimensions,'x',2),'x',-1))*(SELECT SUBSTRING_INDEX(box_product_dimensions,'x',-1))/5000)ELSE box_shipping_weight END ) AS sumweight, (CASE WHEN (SELECT (SELECT SUBSTRING_INDEX(box_product_dimensions,'x',1))*(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(box_product_dimensions,'x',2),'x',-1))*(SELECT SUBSTRING_INDEX(box_product_dimensions,'x',-1))/5000)>box_shipping_weight THEN (SELECT (SELECT SUBSTRING_INDEX(box_product_dimensions,'x',1))*(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(box_product_dimensions,'x',2),'x',-1))*(SELECT SUBSTRING_INDEX(box_product_dimensions,'x',-1))/5000) ELSE box_shipping_weight END ) AS weight FROM `process` LEFT JOIN product ON product.pid=process.pid WHERE 1 AND process.receiver_id>0 AND statu="3" AND property="转仓单" AND isover="N" GROUP BY comment2( SELECT SUBSTRING_INDEX(box_product_dimensions,'x',1)) 内の式を参照することはできません。 ? ?
なぜ選択するのか? ?
( SELECT SUBSTRING_INDEX(box_product_dimensions,'x',1))? ? ?
なぜ選択するのか? ?