View Full Version : مشکل با کاراکترهای ی و ک هنگام استفاده ازدستور Like
sajaaaaad
چهارشنبه 13 اسفند 1393, 16:11 عصر
سلام خدمت دوستان و اساتید عزیز
.
من یک سری اطلاعات رو از اکسل وارد بانک کردم و حالا مشکلی که برام بوجو اومده اینه که دستور لایک روشون کار نمیکنه.!
سوال : چرا.؟
چوون..
داده ای که من وارد بانک کردم از فایل اکسل به این صورته
.
پيچ الكتروموتور پرايد برقي Sme
.
اگر دقت کنید حرف -- ی -- به صورت -- ي -- خورده و حالا که توی پروسیجرم دستور لایک رو استفاده میکنم بین -- ی -- و -- ي -- تفاوت قائل میشه و کار نمیکنه.!!!! :ناراحت: باید چکار کنم؟
.
خودم گرفتم فایل اکسل رو اصلاح کردم و تمام -- ي -- هارو به -- ی -- تغییر دادم، ولی وقتی وارد اسکیوال میشه باز میشه اینجوری -- ي --
SabaSabouhi
پنج شنبه 14 اسفند 1393, 09:01 صبح
سلام خدمت دوستان و اساتید عزیز
.
من یک سری اطلاعات رو از اکسل وارد بانک کردم و حالا مشکلی که برام بوجو اومده اینه که دستور لایک روشون کار نمیکنه.!
سوال : چرا.؟
چوون..
داده ای که من وارد بانک کردم از فایل اکسل به این صورته
.
پيچ الكتروموتور پرايد برقي Sme
.
اگر دقت کنید حرف -- ی -- به صورت -- ي -- خورده و حالا که توی پروسیجرم دستور لایک رو استفاده میکنم بین -- ی -- و -- ي -- تفاوت قائل میشه و کار نمیکنه.!!!! :ناراحت: باید چکار کنم؟
.
خودم گرفتم فایل اکسل رو اصلاح کردم و تمام -- ي -- هارو به -- ی -- تغییر دادم، ولی وقتی وارد اسکیوال میشه باز میشه اینجوری -- ي --
سلام
دلیلش اینه که مایکروسافت یه ابتکار هوشمندانه!!! زده و دو تا «ی» و دو تا «ک» تعریف کرده ( فارسی و عربی ) و این همه مشکل تولید کرده.
یادمه تو همین تالار این قبلاً صحبت شده بود و یکی از دوستان یه راه حل با استفاده از Collation ارائه کرده بود. من تست نکردم، اما گویا کار میکرد.
یه جستجو کنی شاید پیداش کنی، قضیه خیلی قدیمی نیست.
صبا صبوحی
sajaaaaad
شنبه 16 اسفند 1393, 06:26 صبح
مرسی آقای صبوحی ولی من بازم مشکلم حل نشد، اون مطلبی که میگفتین هم پیدا کردم و کداشو توی CMD اجرا کردم ولی مشکل همچنان باقیس.!!!
.
نمیشه کاری کرد که توی جدول اسکیوال تمام "ی" های عربی به "ی" فارسی تبدیل بشن.؟؟ من یکی از جدولام همچین مشکلی داره، باقی اطلاعات جدید پر میشه ولی اطلاعات مربوط به محصولات رو میخوام از اکسل وارد کنم.!!! لطفا راهنمایی کنید. مرسی
.
باتشکر
sajaaaaad
شنبه 16 اسفند 1393, 07:31 صبح
من از کد زیر استفاده کردم ولی جواب نداد :ناراحت: نمیشه ی کاری تو این مایه ها کرد و همه جملاتو تغییر داد
.
DECLARE @es NVarChar(1) SET @es = 'ک'
DECLARE @es1 NVarChar(1) SET @es1 = 'ی'
DECLARE @p0 NVarChar(1) SET @p0 = 'ك'
DECLARE @p1 NVarChar(1) SET @p1 = 'ي'
Update tbl_Product set Pr_Name = REPLACE(REPLACE(Pr_Name, @p0 ,@es), @p1, @es1)
SabaSabouhi
شنبه 16 اسفند 1393, 09:19 صبح
مرسی آقای صبوحی ولی من بازم مشکلم حل نشد، اون مطلبی که میگفتین هم پیدا کردم و کداشو توی CMD اجرا کردم ولی مشکل همچنان باقیس.!!!
.
نمیشه کاری کرد که توی جدول اسکیوال تمام "ی" های عربی به "ی" فارسی تبدیل بشن.؟؟ من یکی از جدولام همچین مشکلی داره، باقی اطلاعات جدید پر میشه ولی اطلاعات مربوط به محصولات رو میخوام از اکسل وارد کنم.!!! لطفا راهنمایی کنید. مرسی
.
باتشکر
سلام
متاسفانه هنوز راه حل تمیز و خوبی پیدا نکردم. من به کارفرما توصیه میکنم که ورودی رو کنترل کنن. یعنی تمام ویندوزها به شکلی تنظیم بشن که همهی کاربرها
یک نوع «ی» و «ک» رو وارد سیستم کنن. ( البته در مورد برنامههای تحت وب این امر شدنی نیست )
هنوز فرصت نکردم، بازی با Collation ها رو امتحان کنم ببینم آیا راهی داره که به صورت سیستماتیک بشه این مشکل رو حل کرد یا نه.
امیدوارم اگه کسی این راه رو رفته برای ما هم بگه که ما دوباره چرخ رو اختراع نکنیم.
صبا صبوحی
sajaaaaad
شنبه 16 اسفند 1393, 14:35 عصر
با سلام پروسیجرمو اینجوری نوشتم مشکلم میشه گفت حل شده ولی خب روش درستی نیست فک کنم
ALTER PROCEDURE [dbo].[s_AllPro]
@Pro_Name nvarchar(200)
AS
BEGIN
DECLARE @Pro_NameArabic Nvarchar(200)
SET @Pro_NameArabic = REPLACE(REPLACE(@Pro_Name,N'ی', N'ي'), N'ک', N'ك')
SELECT
.........
FROM
........
WHERE(
Pr_Name LIKE '%'+RTRIM(LTRIM(@Pro_Name))+'%'
OR
Pr_Name LIKE '%'+RTRIM(LTRIM(@Pro_NameArabic))+'%'
)
END
ham3d1988
یک شنبه 17 اسفند 1393, 09:16 صبح
با سلام پروسیجرمو اینجوری نوشتم مشکلم میشه گفت حل شده ولی خب روش درستی نیست فک کنم
ALTER PROCEDURE [dbo].[s_AllPro]
@Pro_Name nvarchar(200)
AS
BEGIN
DECLARE @Pro_NameArabic Nvarchar(200)
SET @Pro_NameArabic = REPLACE(REPLACE(@Pro_Name,N'ی', N'ي'), N'ک', N'ك')
SELECT
.........
FROM
........
WHERE(
Pr_Name LIKE '%'+RTRIM(LTRIM(@Pro_Name))+'%'
OR
Pr_Name LIKE '%'+RTRIM(LTRIM(@Pro_NameArabic))+'%'
)
END
سلام
این روش اصلا بهینه نیست دوست من
به نظر من با یه کوئری اول بیا اینا رو یکسان کن
شاید این لینک کمک کنه :
http://www.dotnettips.info/post/90/%D9%85%D8%B4%DA%A9%D9%84-%DB%8C-%D9%88-%DA%A9-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D9%88-%D8%B9%D8%B1%D8%A8%DB%8C-%D8%AF%D8%B1-%DB%8C%DA%A9-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A7%D8%B3-%DA%A9%DB%8C%D9%88%D8%A7%D9%84-%D8%B3%D8%B1%D9%88%D8%B1
بعدش بیا برای دیتای جدید یه فیلتر بزار هم توی ثبت داده و هم توی جستجو ، که قبل از فرستادن پارامتر، اول اونو تبدیل کنه به یونیکد استاندارد مدنظر شما و بعد بفرست به دیتابیس برای ثبت یا جستجو
golbafan
یک شنبه 17 اسفند 1393, 13:42 عصر
سلام
من اینجور موقع ها قبل از ارسال نوشته های کاربر برای کوئری اونها رو یکسان سازی میکنم با string replace
sajaaaaad
دوشنبه 18 اسفند 1393, 10:42 صبح
سلام
این روش اصلا بهینه نیست دوست من
به نظر من با یه کوئری اول بیا اینا رو یکسان کن
شاید این لینک کمک کنه :
http://www.dotnettips.info/post/90/%D9%85%D8%B4%DA%A9%D9%84-%DB%8C-%D9%88-%DA%A9-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D9%88-%D8%B9%D8%B1%D8%A8%DB%8C-%D8%AF%D8%B1-%DB%8C%DA%A9-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A7%D8%B3-%DA%A9%DB%8C%D9%88%D8%A7%D9%84-%D8%B3%D8%B1%D9%88%D8%B1
بعدش بیا برای دیتای جدید یه فیلتر بزار هم توی ثبت داده و هم توی جستجو ، که قبل از فرستادن پارامتر، اول اونو تبدیل کنه به یونیکد استاندارد مدنظر شما و بعد بفرست به دیتابیس برای ثبت یا جستجو
مرسی حامد جان ممنون فک کنم اون روز لینک مشکل داشت ولی الان باز شد، مرسی حامد جان.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.