PDA

View Full Version : شرط وجود عبارت در آرایه



amirepsilon
پنج شنبه 27 تیر 1392, 02:14 صبح
سلام دوستان حتما میدونید که وقتی میخواهیم مقداری را در یک آرایه بررسی کنیم از کد زیر استفاده میکنیم: select ... where a IN (array) اما من برعکس این کد رو نیاز دارم. یعنی به جای یک آرایه، یک مقدار بدم و درواقع آرایه من، مقدار فیلدم باشه. مثلا این (که البته sql همنچین دستوری نداره) select ... where (array) contains a ممنون میشم کمکم کنید.

parsboy
پنج شنبه 27 تیر 1392, 04:12 صبح
سلام دوستان حتما میدونید که وقتی میخواهیم مقداری را در یک آرایه بررسی کنیم از کد زیر استفاده میکنیم: select ... where a IN (array) اما من برعکس این کد رو نیاز دارم. یعنی به جای یک آرایه، یک مقدار بدم و درواقع آرایه من، مقدار فیلدم باشه. مثلا این (که البته sql همنچین دستوری نداره) select ... where (array) contains a ممنون میشم کمکم کنید.
باسلام میشه یکم واضح تربیان کنید؟
موفق باشید.

nsco_nsco
پنج شنبه 27 تیر 1392, 04:57 صبح
سلام منم درست متوجه نشدم یعنی می خواید یک متغییر را در یک فیلد ذخیره کنید؟

MMSHFE
پنج شنبه 27 تیر 1392, 10:15 صبح
آرایه رو توی فیلد به چه صورت ذخیره کردین؟ یک نمونه از دیتا بگذارین. اگه JSON یا Serialized باشه، میتونید با کمک LIKE پیداش کنید. بهرحال باید یک نمونه از Data رو بگذارین و با مثال، دقیقاً بگین چی میخواین تا بتونیم راهنمایی کنیم.

amirepsilon
پنج شنبه 27 تیر 1392, 11:07 صبح
داخل فیلد 1,2,3 داریم
میخواهیم رکورد هایی را نمایش دهیم که مثلا عدد 4 در این فیلد باشد. (دقیقا برعکس IN میشه!)

MMSHFE
پنج شنبه 27 تیر 1392, 11:24 صبح
اینو تست کنید:
SELECT * FROM `table` WHERE (CONCAT(`field`, '0x2c') LIKE '%,4,%')
نکته: تابع CONCAT برای الحاق یک رشته به رشته دیگه و 0x2c هم کد Hex کارکتر کاما است. حالا توی شرط گفتیم رکوردهایی رو استخراج کنه که توی اونها، عدد 4 بین دو کاما وجود داره. CONCAT رو برای این انجام دادیم که انتهای رشته شما، کاما نبود و اگه 4 آخرین عدد باشه، پیدا نمیکنه ولی اینطوری، یک کاما به آخرش اضافه میشه.

amirepsilon
پنج شنبه 27 تیر 1392, 14:27 عصر
سلام دوستان
راه اصولی این هست:


Find_in_set()

شما هم استفاده کنید.
موفق باشید