PDA

View Full Version : استخراج نام فیلدها در یک رشته



esmit61
سه شنبه 25 اسفند 1388, 23:46 عصر
سلام. چطوری میتونم در دستور select کاری کنم که همه مقادیر یک فیلد (که مثلاً با کاما از هم جدا شده اند) رو استخراج کنم.
مثلاً اگر جدول t1 چهار تا رکورد داشته باشه و در فیلد name مقادیر ali و akbar و ahmad وجود داشته باشه خروجی باید بصورت ali،akbar,ahmad باشه
در MySql دستور Group_concat این کار رو انجام میده.
در حقیقت بفرمائید بجای علامت سوال چی بنویسم ؟ (از cursor نمیخواهم استفاده کنم)



Select ?(name) from t1
این کوئری باید با یه کوئری دیگه unionبشه. بنابراین نمیتونم متغیر تعریف کنم و ...

محمد سلیم آبادی
سه شنبه 25 اسفند 1388, 23:51 عصر
سلام،

دستور SELECT یک syntax ای داره به نام Assignment Select یعنی می تونین در این دستور یک متغیر رو مقدار دهی کنین به این شکل:


Declare @concat varchar(100) --d


SELECT @concat = COALESCE(@concat + ', ','') + name FROM table_name

SELECT @concat AS Concatenating

محمد سلیم آبادی
چهارشنبه 26 اسفند 1388, 00:29 صبح
این کوئری باید با یه کوئری دیگه unionبشه. بنابراین نمیتونم متغیر تعریف کنم و ...

لطفا برای گرفتن جواب دقیق به سوالات پاسخ بدین:

1 Query خودتون رو در اینجا قرار بدین و اصلا نگران شدت پیچیده گی و طولانی بودن کدها نباشین (چون جزئیات اهمیت دارن مثلا آیا کوئری ماده ی group by داره ...)
2 از چه نسخه ی SQL Server استفاده می کنین؟ 2000 یا بالاتر

esmit61
پنج شنبه 27 اسفند 1388, 16:01 عصر
من که عرض کردم نمیتونم از متغیر استفاده کنم
راستش هدف من تست کردن امنیت یه سایته. در حقیقت من میخوام ببینم آیا میتونم از طریق injection لیست جداول طراحی شده برای یک سایت رو بدست بیارم یا نه ؟
از اونجایی که سایت مورد نظر فقط یک جا برای گذاشتن فیلد داره (یعنی حالت grid نداره) مجبورم توی همون یک فضا، کل جداول رو نشون بدم. میبینید که نمیتونم از متغیر استفاده کنم