با استفاده از تابع 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 از نقل‌قول‌ها و کاراکترهای ویژه به‌درستی استفاده نمایید.

توسط پژوهشگر در 202 روز قبل ساعت 02:23
دسته بندی ها: MySQL MySQL for beginner
arash در 202 روز قبل ساعت 09:53

نکته مهم اینکه EXTRACTVALUE در نسخه‌های جدید MySQL ممکن است منسوخ یا محدود باشد؛ اگر امکان دارد از XML_TABLE یا سایر قابلیت‌های XQuery استفاده کنید. برای مقایسه عددی خروجی که به صورت رشته برمی‌گردد، حتماً از CAST/CONVERT به DECIMAL استفاده کنید و با COALESCE مقادیر NULL را مدیریت کنید تا خطاها رفع شوند. مسیر XPath را دقیق بنویسید، مانند '/product/price'، و در صورت نبود مسیر مقدار پیش‌فرض مناسبی در نظر بگیرید. برای بهبود کارایی می‌توانید قیمت را در یک زیرداستی محاسبه کنید و نتیجه را قبل از فیلتر استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری