View Full Version : اشکال در دستور Case
asemoon barooni
شنبه 14 آبان 1390, 08:00 صبح
با دستور زیر میخوام وقتی که نام رو وارد کردم اگر بود کد رو برگردونه اگر نبود 0 رو نشون بده ولی برای حالت دوم هیچ مقداری رو نشون نمیده نمیدونم اشکال کجاست اگه راهنمایی کنید ممنون می شم!!
SELECT
CASEWHEN CodeJob ISNOTNULLTHEN CodeJob ELSE'0'ENDAS CodeJob
FROM
dbo.TbSocialSecurityJob
WHERE
(JobName = @JobName)
حمیدرضاصادقیان
شنبه 14 آبان 1390, 08:39 صبح
سلام.
در حالت دوم آیا مقدار اون فیلد Null هست یا هیچی نداره؟چون در حالتی که فقط Null باشه مقدار برمیگردونه. اگر نوع اون مثلا عددی هست و غیر Null باشه هیچی برنمیگردونه.
میتونید به این حالت بنویسید.
SELECT
CASE WHEN (codejob<>'') THEN CodeJob
ELSE '0' END AS CodeJob
FROM
dbo.TbSocialSecurityJob
WHERE
JobName = @JobName
البته اگر نوع CodeJob از نوع رشته ای هست.
asemoon barooni
شنبه 14 آبان 1390, 09:43 صبح
با تشکر ولی روش شمام باز جواب نمیداد. ولی به این صورت تغییر دادم درست شد:
SET
@CodeJob='0'
SELECT
@CodeJob =CodeJob
FROM
dbo.TbSocialSecurityJob
WHERE
(JobName = @JobName)
حمیدرضاصادقیان
شنبه 14 آبان 1390, 11:15 صبح
نوع فیلد شما چی هست؟
asemoon barooni
شنبه 14 آبان 1390, 11:32 صبح
از نوع nvarchar هست
حمیدرضاصادقیان
شنبه 14 آبان 1390, 12:19 عصر
بعد فرمودید هیچ مقداری نمیده. یعنی کلا رکوردی بر نمیگردونه؟ یا در اون فیلد CodeJob چیزی نمینویسه؟
بعد اون رکورد ،محتویات این فیلد چی هست؟؟
asemoon barooni
شنبه 14 آبان 1390, 14:05 عصر
وقتی که نام شغل در جدول باشه درست عمل میکنه CodeJob رو برمیگردونه ولی وقتی نام شغل در جدول نباشه من میخوام 0 برگردونه ولی CodeJob رو خالی نشون میده.
حمیدرضاصادقیان
شنبه 14 آبان 1390, 15:29 عصر
خوب اینو به این شکل نمیتونید بنویسید.
من فکر میکردم که مثلا رکورد CodeJob مقدار نداره ولی Jobname مقدار داره. برای اینکار شما باید مثلا از If Exists استفاده کنید.
مثلا میتونید داخل یک UDF بنویسید و مقدار اونو برگشت بدید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.