با استفاده از تابع EXTRACTVALUE در MySQL مقدار عنصر price را از ستون xml_data جدول products استخراج کنید و تنها ردیفهایی را نمایش دهید که مقدار قیمت بزرگتر از 100 باشد.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:23 0.0
برای حل این سوال از تابع EXTRACTVALUE(xml_doc, xpath_expr) استفاده کنید تا مقدار مناسب از سند XML در ستون xml_data بگیرید، سپس برای مقایسه عددی خروجی که به صورت رشته بازمیگردد را با CAST یا CONVERT به DECIMAL تبدیل کنید؛ مثال کلی: SELECT * FROM products WHERE CAST(EXTRACTVALUE(xml_data, '/product/price') AS DECIMAL(10,2)) > 100. توجه کنید EXTRACTVALUE در صورت نبود مسیر موردنظر NULL برمیگرداند و لازم است برای موارد خالی از COALESCE استفاده یا شرطهای مناسب اضافه کنید، و در رشته XPath از نقلقولها و کاراکترهای ویژه بهدرستی استفاده نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مهم اینکه EXTRACTVALUE در نسخههای جدید MySQL ممکن است منسوخ یا محدود باشد؛ اگر امکان دارد از XML_TABLE یا سایر قابلیتهای XQuery استفاده کنید. برای مقایسه عددی خروجی که به صورت رشته برمیگردد، حتماً از CAST/CONVERT به DECIMAL استفاده کنید و با COALESCE مقادیر NULL را مدیریت کنید تا خطاها رفع شوند. مسیر XPath را دقیق بنویسید، مانند '/product/price'، و در صورت نبود مسیر مقدار پیشفرض مناسبی در نظر بگیرید. برای بهبود کارایی میتوانید قیمت را در یک زیرداستی محاسبه کنید و نتیجه را قبل از فیلتر استفاده کنید.
گزارش