PDA

View Full Version : سوال: تجزیه کردن فیلد



haghighat-62
سه شنبه 09 تیر 1388, 22:45 عصر
با سلام
دوستان چطور میشه محتویات یک فیلد را به چند قسمت تقسیم کرد و از محتویات فیلد فقط بخشی از اون را استخراج کرد؟
ممنون میشم اگر راهنمایی بفرمایید.

رضا عربلو
چهارشنبه 10 تیر 1388, 10:06 صبح
اگر داده شما از نوع رشته ای باشد می توانید از توابع رشته ای از قبیل SubString و ... استفاده کنید.
اگر از نوع DateTime است می توانید از توایعی نظیر datediff , dateadd , datepart استفاده کنید.
برای انواع عددی می توانید از توابع ریاضی استفاده کنید.

haghighat-62
پنج شنبه 11 تیر 1388, 23:30 عصر
اگر داده شما از نوع رشته ای باشد می توانید از توابع رشته ای از قبیل SubString و ... استفاده کنید.
اگر از نوع DateTime است می توانید از توایعی نظیر datediff , dateadd , datepart استفاده کنید.
برای انواع عددی می توانید از توابع ریاضی استفاده کنید.
دوست عزیز دستور substring در sql چه طور استفاده میشود؟

hobab-theme
جمعه 12 تیر 1388, 01:56 صبح
اگر داده شما از نوع رشته ای باشد می توانید از توابع رشته ای از قبیل SubString و ... استفاده کنید.
اگر از نوع DateTime است می توانید از توایعی نظیر datediff , dateadd , datepart استفاده کنید.
برای انواع عددی می توانید از توابع ریاضی استفاده کنید.
دوست من اگه امکانش هست یه نمونه قرار بدید
ما که هیچی نفهمیدیم:افسرده:

رضا عربلو
جمعه 12 تیر 1388, 14:08 عصر
فرض کنید فیلدی با نام employee دارید که در آن نام و نام خانوادگی را با هم توسط یک کاما جدا کرده اید. حالا می خواهید این ستون را به دو ستنون نام و نام خانوادگی بشکانید:
فکر می کنم یک همچین چیزی بشود:


SELECT SubString(Employee, 0, CharIndex(',', Employee)) as name , SubString(Employee, Len(Employee) - CharIndex(',', Employee), Len(Employee)) as Family
From ....

hobab-theme
جمعه 12 تیر 1388, 14:32 عصر
ممنون عزیز
امتحانش میکنم خبرش رو میدم
موفق باشید:قلب:

hobab-theme
یک شنبه 14 تیر 1388, 03:11 صبح
عزیز خطا میگیره
از CharIndex
اگه برات امکانش هست یه نمونه ساده بذار
ممنون

رضا عربلو
یک شنبه 14 تیر 1388, 07:23 صبح
کوئری بالا مشکلی نداشت.
کوئری زیر را اجرا کردم و مشکلی ندارد:


USE Northwind
SELECT SubString(ProductName, 0, CharIndex(' ', ProductName)) as name , SubString(ProductName, CharIndex(' ', ProductName), Len(ProductName)-CharIndex(' ', ProductName)) as Family
From dbo.Products

hobab-theme
یک شنبه 14 تیر 1388, 16:20 عصر
کوئری بالا مشکلی نداشت.
کوئری زیر را اجرا کردم و مشکلی ندارد:


USE Northwind
SELECTSubString(ProductName, 0,CharIndex(' ', ProductName))asname,SubString(ProductName,CharInde x(' ', ProductName),Len(ProductName)-CharIndex(' ', ProductName))as Family
From dbo.Products

دوست عزیز شما از رویه استفاده کردید برای دریافت اطلاعات جدول products
اگه ممکنه این کد رو به صورت ساده و کلاسیک بنویسید . آخه من با رویه ها آشنا نیستم
ممنون

رضا عربلو
دوشنبه 15 تیر 1388, 18:37 عصر
دوست عزیز من از هیچ sp استفاده نکرده ام بلکه هنگام copy/paste برخی کاراکترهای کپی نشده اند. برایتان درست کردم:


USE Northwind
SELECT SubString(ProductName, 0,CharIndex(' ', ProductName))as name,SubString(ProductName,CharIndex(' ', ProductName),Len(ProductName)-CharIndex(' ', ProductName))as Family
From dbo.Products

بهنام بهمنی
چهارشنبه 17 تیر 1388, 14:38 عصر
در محیط SQL-Server کلید F1 را بزنید تا Book Online آن ظاهر شود بعد دستور گفته شده را جستحو کنید تا مثال ولیستی از دستورات مشابه برای شما فراهم شود.

یک مثال از راهنما


SELECT SUBTRING(FirstName,1,1) AS Initial, LastName
FROM Employees

نتیجه

Initial..........LastName
-------------------------
A................Funk
M................Pearson
L................Calafato
N................Danner
J................Lee
S................Byham
M................Sutter
R................King
A................Doyle

haghighat-62
یک شنبه 21 تیر 1388, 19:26 عصر
USE Northwind
SELECTSubString(ProductName, 0,CharIndex(' ', ProductName))asname,SubString(ProductName,CharInde x(' ', ProductName),Len(ProductName)-CharIndex(' ', ProductName))as Family
From dbo.Products
[/quote]
دوست عزیز سلام
اگر در فیلدی که داریم بین دو رشته ای که میخواهیم جدا کنیم هیچ فضای خالی ' ' و یا کاما ' , ' نداشته باشیم چه جوری این کد را باید تغییر بدهیم مثلا tehran1113 و یا tabriz811 که میخواهم thehran و 1113
و tabrizو 811 را از هم جدا کنم البته فیلد شامل این موارد تعدادشان زیاد و متفاوت است و مختص این دو مورد نیست که این کد را مختص آنها بنویسم اگر ممکن است راهنمایی بفرمایید. با تشکر

hobab-theme
یک شنبه 21 تیر 1388, 19:48 عصر
عزیز خطا میگیره
از CharIndex
اگه برات امکانش هست یه نمونه ساده بذار
ممنون
بازم تکرار همین ارور

z.nasiri
دوشنبه 22 تیر 1388, 14:26 عصر
سلام
امید وارم توضیحم به کارت بیاد،این مثالی که زده شد میگه اون قسمت از string را می خواهم که مربوط به فیلدی تحت نامproductName و از نقطه صفر رشته شروع کن تا وقتی که "و"یا " " را ببینی ، به نظر من هم هیچ مشکلی در این کد نیست و یک نمونه کد ساده استو ساده تر را هم که یک دوست دیگه اشاره کرد، برای دسترسی به زیر رشته می تونی از

left(string,count)
right(string,count)
استفاده کنی

haghighat-62
پنج شنبه 01 مرداد 1388, 20:50 عصر
دوستان عزیز سلام اگر در فیلدی که داریم بین دو رشته ای که میخواهیم جدا کنیم هیچ فضای خالی ' ' و یا کاما ' , ' نداشته باشیم چه جوری این کد را باید تغییر بدهیم مثلا tehran1113 و یا tabriz811 که میخواهم thehran و 1113 و tabrizو 811 را از هم جدا کنم البته فیلد شامل این موارد تعدادشان زیاد و متفاوت است و مختص این دو مورد نیست که این کد را مختص آنها بنویسم و البته بعضی از فیلدها فقط اسم بدون شماره است مثل ahvaz که باید این شماره ها را جدا کنم و با ستون دیگری مقایسه کنم شماره ها به صورت 2 رقم 2 زقم مثل 11 13 باید جدا شود که هر کدام با یک فیلد دیگر مقایسه میشود اگر ممکن است راهنمایی بفرمایید خیلی گیرم. با تشکر

hobab-theme
دوشنبه 12 مرداد 1388, 23:22 عصر
دوستان ممنونم از همگی
بالاخره به یه نتیجه هایی رسیدم
ولی ...
ولی کامل نیست
من کد زیر رو نوشتم
اصلاً بذترید یه توضیحی بدم
من تعدادی چک باکس دارم که کاربر بنا به نیازش اونا رو انتخاب میکنه
که خوب ما نمیدونیم که اون چندتا رو انتخاب میکنه
حالا من مقدار این چک باکسها رو به صورت زیر تو یه فیلد از جدول بانکم قرار می دم
chk01,chk02,chk03,chk04,...
حالا من میخوام که تو کنترل پنل کاربر موارد انتخابی رو به صورت بازم چک باکس نشونش بدم و بعد یه کارایی رو انجام بدم
------------
خوب من با توجه به راهنمایی های شما عزیزان کد زیر رو نوشتم ولی نتیجه اصلاً نتیجه نیست:ناراحت:
واقعاً خروجی عجیبی بهم داد؟؟؟!!!:متعجب:
لطفاً یه امتحانی کنید و خروجی رو خودتون ببینید

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Sub Page_Load()
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrin gs("Database").ConnectionString)
Dim str As String
str = "SELECT SubString(Company, 0,CharIndex(',', Company))as name,SubString(Company,CharIndex(',', Company),Len(Company)-CharIndex(',', Company))as family FROM Test"
Dim cmd As New SqlCommand(str, con)
Dim dtr As SqlDataReader
Using con
con.Open()
dtr = cmd.ExecuteReader
While dtr.Read
CheckBoxList1.DataSource = dtr("name")
CheckBoxList1.DataBind()
End While
dtr.Close()
End Using

End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
</asp:CheckBoxList>
</div>
</form>
</body>
</html>