PDA

View Full Version : جدا کردن داده ها از هم



Iran58
چهارشنبه 02 اردیبهشت 1394, 20:19 عصر
سلام
برای عنوان سوال معذرت می خواهم
دادهای مانند(1-96584و8-4562و6-412 و...)به تعداد150000رکورد درستون aداریم حال می خواهم قسمت قبل از '-'را بدست آورم مثلا(96584و4562و412) چگونه باید این کار را انجام بدهم
باتشکر

مهرداد صفا
پنج شنبه 03 اردیبهشت 1394, 01:24 صبح
سلام.
این لینک رو ببینید:
T-SQL: RIGHT, LEFT, SUBSTRING and CHARINDEX Functions - TechNet Articles - United States (English) - TechNet Wiki (http://social.technet.microsoft.com/wiki/contents/articles/17948.t-sql-right-left-substring-and-charindex-functions.aspx)

Iran58
پنج شنبه 03 اردیبهشت 1394, 09:08 صبح
سلام.
این لینک رو ببینید:
T-SQL: RIGHT, LEFT, SUBSTRING and CHARINDEX Functions - TechNet Articles - United States (English) - TechNet Wiki (http://social.technet.microsoft.com/wiki/contents/articles/17948.t-sql-right-left-substring-and-charindex-functions.aspx)
باتشکر از جواب شما اما این صفحه کمکی به من نکرد

golnaz_a
پنج شنبه 03 اردیبهشت 1394, 12:11 عصر
تمام عددها در این فرمت هستند؟ منظورم اینه که همیشه بعد از - عدد یک رقمی هست یا خیر؟

Iran58
پنج شنبه 03 اردیبهشت 1394, 12:48 عصر
تمام عددها در این فرمت هستند؟ منظورم اینه که همیشه بعد از - عدد یک رقمی هست یا خیر؟
باسلام
بله بعداز - همیشه یک رقمی است اما قبلش 3و4و5رقمی هستند من قبل را می خواهم

homayoun_c
پنج شنبه 03 اردیبهشت 1394, 13:04 عصر
این برای اعداد یا حروف های قبلش
select Left(FieldName,charindex('-',FieldName)-1) as Result ,FieldName from TableName

این برای اعداد یا حروف های بعدش
select Right(FieldName,len(FieldName)-charindex('-',FieldName)) as Result ,FieldName from TableName

Iran58
پنج شنبه 03 اردیبهشت 1394, 13:20 عصر
این برای اعداد یا حروف های قبلش
select Left(FieldName,charindex('-',FieldName)-1) as Result ,FieldName from TableName

این برای اعداد یا حروف های بعدش
select Right(FieldName,len(FieldName)-charindex('-',FieldName)) as Result ,FieldName from TableName
سلام
ارور زیر نمایش داده میشود
Invalid length parameter passed to the LEFT or SUBSTRING function.
در تابعLEFT متغییر نمی توان تعریف کرد

Iran58
پنج شنبه 03 اردیبهشت 1394, 13:22 عصر
باسلام
جواب سوال را بدست آوردم

select
right(substring(FieldName, charindex('-',FieldName,1),2),1) as ReRight ,
STUFF(FieldName,len(FieldName)-1, 2,'')as ReLeft,
FieldName
from TableName

homayoun_c
پنج شنبه 03 اردیبهشت 1394, 14:58 عصر
کی میگه نمیشه استفاده کرد؟؟؟

من جواب گرفتم اینم تصویرش
130576

homayoun_c
پنج شنبه 03 اردیبهشت 1394, 15:10 عصر
سلام
برای عنوان سوال معذرت می خواهم
دادهای مانند(1-96584و8-4562و6-412 و...)به تعداد150000رکورد درستون aداریم حال می خواهم قسمت قبل از '-'را بدست آورم مثلا(96584و4562و412) چگونه باید این کار را انجام بدهم
باتشکر

کدی که نوشتی جوابش با اون چیزی که جواب گرفتی کاملا متفاوت بود
نتیجه کد تو این میشه
130578

اگر هم منظورت همین جواب بوده که سوالت رو کلا اشتباه پرسیدی چون جواب سوالت همونیه که تو پست بالا نوشتم

Iran58
پنج شنبه 03 اردیبهشت 1394, 16:13 عصر
باسلام
وسپاس از دقت نظر شما
1)
130579
فقط ببخشید اسم هارا تغییر دادم به تعداد رکورد دقت فرمایید و صحیح بودن کوئری
2)

این هم کوئری شما مقدار ارسالی1163 در برابر داده 154351برگشتی از کوئری تصویر 1 و بوجود آمدن خطا در ضمن متن خطا را هم بخوانید(بنظرم کوئری شما برای مقدار کم جواب گو است تا 1163 را امتحان کردم اما1164 را ارور تصویر را می دهد)
باتشکر از وقتی که برای جواب گذاشته اید
ویک سوال چرا کوئری دوست عزیزمان در مقدار زیاد جوابگو نبود اما مقدار کم را جواب داد