با استفاده از تابع EXTRACTVALUE در MySQL، یک پرسوجو بنویسید که از جدول orders ستون xml_details را خوانده و مقدار نام مشتری (order/customer/name) را استخراج و بهصورت customer_name نمایش دهد و تنها ردیفهایی که نام مشتری 'علی' هستند را برگرداند.
10.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:54 0.0
برای حل این مسئله از تابع EXTRACTVALUE استفاده کنید: SELECT id, EXTRACTVALUE(xml_details, '/order/customer/name') AS customer_name FROM orders WHERE EXTRACTVALUE(xml_details, '/order/customer/name') = 'علی'; توجه داشته باشید مسیر XPath را متناسب با ساختار XML خود تنظیم کنید و در نسخههای جدید MySQL (مثلاً 8.0) این تابع حذف یا منسوخ شده است، در آن صورت از روشهای جایگزین برای پردازش XML یا تبدیل به JSON استفاده نمایید.
2 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته: EXTRACTVALUE در MySQL 8.0 به بعد منسوخ یا حذف شده است، پس برای نسخههای جدید باید از XPath یا تبدیل XML به JSON استفاده کنید. مسیر XPath را دقیقاً با ساختار XML جدول خود تنظیم کنید (مثلاً /order/customer/name/text()). اگر بخواهید نام را بهدست آورید و فیلتر کنید، میتوانید WHERE XPath('/order/customer/name/text()', xml_details) = 'علی' را به کار ببرید، یا در نهایت دادهها را به JSON تبدیل کنید و با JSON_EXTRACT فیلتر کنید. در صورت کار با مقادیر زیادی از دادههای XML، بهبود کارایی با ایجاد شاخصهای مناسب یا انجام تبدیل در اپلیکیشن پیشنهاد میشود.
گزارش