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 مشکلی ندارد.
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 مشکلی ندارد.