PDA

View Full Version : تفکیک عدد از رشته



goodarziasl
شنبه 02 اردیبهشت 1391, 17:18 عصر
با سلام خدا قوت
من جدولی با 1000 رکورد و 3 فیلد دارم که باید محتویات 2تا از فیلدها را ویرایش کنم مثلا فیلد add , def
Add ------------ def
1sd3g5 f5 ------------ hb655-0
4f g5-nh ------------ 65yh7u
4e-6-9 ------------uyg6678t
حالا من باید اینو تبدیل کنم به Add ------------def
6550------------ 1355
657 ------------ 45
6678 ------------ 469 خودم یه کارایی کردم نشد اگه کمک کنید ممنون میشم

Reza_Yarahmadi
شنبه 02 اردیبهشت 1391, 19:01 عصر
ساده ترین راه حل اینه که یه تابع بنویسید که توی اون تابع با استفاده از تابع Replace حروف رو حذف کنید
CREATE FUNCTION ClearCharacter(@Param nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
Return
Replace(Replace(Replace(
Replace(Replace(Replace(
Replace(Replace(Replace(
Replace(Replace(Replace(
Replace(Replace(Replace(
Replace(Replace(Replace(
Replace(Replace(Replace(
Replace(Replace(Replace(
Replace(Replace(Replace(
Replace(@Param
, 'A', ''), 'B', ''), 'C', '')
, 'D', ''), 'E', ''), 'F', '')
, 'G', ''), 'H', ''), 'I', '')
, 'J', ''), 'K', ''), 'L', '')
, 'M', ''), 'N', ''), 'O', '')
, 'P', ''), 'Q', ''), 'R', '')
, 'S', ''), 'T', ''), 'U', '')
, 'V', ''), 'W', ''), 'X', '')
, 'Y', ''), 'Z', ''), ' ', '')
, '-', '')
END
Declare @T table(Col1 nvarchar(max), Col2 nvarchar(max))

Insert Into @T values('1sd3g5 f5', 'hb655-0')
Insert Into @T values('4f g5-nh', '65yh7u')
Insert Into @T values('4e-6-9', 'uyg6678t')


Select
dbo.ClearCharacter(Col1) as Col1,
dbo.ClearCharacter(Col2) as Col2
From @T

goodarziasl
یک شنبه 03 اردیبهشت 1391, 18:12 عصر
1-یعنی من باید 1000 خط بنویسم برای ویرایش 1000 رکورد
2-من میخوام توی هر چی رکورد غیر از عدد همه کاراکتر های اضافه حذف بشه امکان داره مثلا # کارکتر هم باشه
ممنونم