با استفاده از تابع MAKE_SET در MySQL یک پرسوجوی SELECT بنویسید که برای جدول roles با ستون permissions_bitmask (INTEGER) و مجوزهای ممکن ('read','write','delete')، ستونی بهنام active_permissions تولید کند که مجوزهای فعال را بهصورت رشتهای جداشده با کاما نشان دهد.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:11 0.0
در MySQL از تابع MAKE_SET(bitmask, val1, val2, ...) برای تبدیل یک بیتمپ عددی به رشتهای از مقادیر متناظر استفاده میشود؛ هر بیت عدد (شروع از بیت کمارزش) نشاندهنده انتخاب یا عدم انتخاب آرگومان متناظر است. راهحل معمول نوشتن یک SELECT ساده است مانند: SELECT id, MAKE_SET(permissions_bitmask, 'read','write','delete') AS active_permissions FROM roles; توجه کنید که مقدار permissions_bitmask باید عدد صحیح باشد و ترتیب آرگومانها تعیینکننده موقعیت بیتها است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مفید: MAKE_SET از بیتهای عددی با کمارزشترین بیت شروع میکند و ترتیب آرگومانها موقعیت هر مجوز را تعیین میکند، پس مطمئن شوید که بیتها با جانمایی مطلوب شما همخوانی دارد. اگر permissions_bitmask مقدار خارج از بازهٔ معرفیشده (مثلاً بیتهای اضافی) داشته باشد، آن بیتها نادیده گرفته میشوند. همچنین برای حالت صفر یا هیچ مجوزی ممکن است یک مقدار خالی برگردد که باید در نمایش نتیجه در نظر گرفته شود. نمونهٔ استفاده: SELECT id, MAKE_SET(permissions_bitmask, 'read','write','delete') AS active_permissions FROM roles;
گزارش