دسته بندی ها
12:35 1401/02/23

نمایش علامت سوال به جای حروف فارسی در Sql Server

مشخصات سوال کننده :
کاربر : Mortezahkalate     امتیاز کاربر : 0     رتبه کاربر : 7018
دسته بندی : Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 6311
3 نظر
fateme : موقع ایجاد دیتابیس Collation رو چی قرار دادید ؟ نکته بعدی اینکه آیا فیلدها رو به صورت varchar تعریف کردید یا nvarchar ؟

امتیاز کاربر : 1617   رتبه کاربر : 2   تاریخ ثبت : 12:46 1401/02/23
Mortezahkalate : از nvarchar استفاده شده است و به روش کدفرس هس

امتیاز کاربر : 0   رتبه کاربر : 7018   تاریخ ثبت : 01:28 1401/02/23
fateme : خب DataType رو به varchar تغییر بدید و تست کنید. یا اینکه یه فیلد جدید با datatype از نوع varchar ایجاد کنید و روش تست کنید ببینید کار میکنه یا نه.

امتیاز کاربر : 1617   رتبه کاربر : 2   تاریخ ثبت : 03:01 1401/02/23
ادامه نظرات ...
پاسخ دهنده : fateme 16:20 1401/02/23

اگر در دیتابیس DataType رو به صورت nvarchar تعریف کردید نباید مشکلی باشه. احتمالا توی کوئری که دارید یک تبدیل نوع داره انجام میشه. بهتره قبل از حروف فارسی از N استفاده کنید تا به نوع nvarchar تبدیل بشه. کوئری شما به شکل زیر تبدیل میشه :

ALTER Procedure Sp_UserLeaveReprt
	@FromDate datetime,
	@ToDate Datetime,
	@userid varchar(max),
	@LeaveType int
As
Begin
	if (@LeaveType = -1)
	Begin
		select 
		LeaveType,
		(Case When LeaveType = 1 Then N'ساعتی' When LeaveType = 2 Then N'استحقاقی' When LeaveType = 3 Then N'استعلاجی' When LeaveType = 4 Then N'بدون حقوق' Else '' End) As LeaveTypeDesc
		 from Leave_Tbl
			where UserID_Request =	@userid
			And ((FromDate_Day >=	@FromDate And ToDate_Day <= @ToDate)
				Or
			(FromTime_Saati >=	@FromDate And FromTime_Saati <=@ToDate))
	End
	else
	Begin
		select 
		LeaveType,
		(Case When LeaveType = 1 Then N'ساعتی' When LeaveType = 2 Then N'استحقاقی' When LeaveType = 3 Then N'استعلاجی' When LeaveType = 4 Then N'بدون حقوق' Else '' End) As LeaveTypeDesc
		 from Leave_Tbl
			where UserID_Request =	@userid
			And LeaveType = @LeaveType
			And ((FromDate_Day >=	@FromDate And ToDate_Day <= @ToDate)
				Or
			(FromTime_Saati >=	@FromDate And FromTime_Saati <=@ToDate))
	End
End

وقتی از N قبل از حروف فارسی یا عربی استفاده می کنید اگر DataType از نوع varchar یا char باشه تبدیل به nvarchar یا nchar میشه.

به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود