PDA

View Full Version : سوال: فهرست بانکهای اطلاعاتی در sql2008



raismh
شنبه 20 تیر 1388, 12:45 عصر
در sql20008 یک دیتا بیس بنام SH1_ACC86 را Attach کرده ام . با query زیر دیتا بیس هایی که در آخر آن عدد 86 است را پیدا می کنم . با خطا مواجه می شوم. یعنی درعین حالیکه این select داری یک Where string است که فقط بایستی سراغ دیتا بیس هایی برود که نام مشابه SH1_ACC دارند سراغ همه می رود و در Cast به اشکال می خورد.


declare @DbName VarChar(10)
declare @Year1 int
declare @Year2 int
declare @Y as nvarchar(2)
set @Y='86'

set @DbName ='SH1_Acc'
set @Year1 = 0
set @Year2 = 99

Select name as name ,Right(name,2) as Yea
from master..sysdatabases
where (name like '%'+@DbName+'%' )
and (cast((right(name,2)) as int) =86)


خطا : Conversion failed when converting the nvarchar value 'er' to data type int.
حرف er مربوط به 2 حرف سمت راست (master (datbase است.
نکته مهم اینکه این query در sql2000 مشکلی ندارد.

AminSobati
شنبه 20 تیر 1388, 21:42 عصر
دوست عزیزم این طبیعیه که نام Master به این مشکل برخورد کنه. میتونین اول یک Query بگیرین تا اونهایی که سمت راستشون عدد هستند به دست بیارین:


select * from sys.databases where
name like '%[0-9][0-9]'

و بعد از این مجددا Query بگیرین

raismh
یک شنبه 21 تیر 1388, 15:32 عصر
متشکرم . اما سوال اصلی من این است که چرا در sql2000 با این خطا مواجه نمی شویم و تفاوت sql2000 و sql2008 در چنین مواردی چیست ؟ . با تشکر مجدد .