View Full Version : تغییر آخرین حرف یک متغیر
Iran58
پنج شنبه 17 دی 1394, 10:51 صبح
سلام
فرض کنید
declare @s varchar(50)='4420101742';
را داریم حال می خواهم
الف 2 (آخرین کراکتر)را با عدد 0 عوض کنم
ب)42 (2تا کاراکترآخر)را با عدد 00 عوض کنم
تا آخر
چگونه باید این کار را کنم
با کد
declare @s varchar(50)='4420101742';
select (REPLACE(@s,right(@s,1),'0'))
نمیشه چون کلیه عددهای 2 را به 0 تغییر می دهد
لطفا راهنمای بفرمایید
حمیدرضاصادقیان
پنج شنبه 17 دی 1394, 14:14 عصر
سلام
صورت مسئله شفاف نیست.
الان مثلا 17 رو با چی جایگزین کنه؟
یا مثلا اگر به جای 42 اعداد دیگه بود چیکار کنه؟
الگوریتم کارتون رو توضیح بدین.
Iran58
پنج شنبه 17 دی 1394, 19:58 عصر
سلام
صورت مسئله شفاف نیست.
الان مثلا 17 رو با چی جایگزین کنه؟
یا مثلا اگر به جای 42 اعداد دیگه بود چیکار کنه؟
الگوریتم کارتون رو توضیح بدین.
باسلام
4420101742 بشه 4420101740
4420101740 بشه 4420101700
هینطور تابرسه به 4000000000
ASKaffash
شنبه 19 دی 1394, 07:15 صبح
سلام
Declare @X VarChar(Max)='4420101742'
Declare @L Tinyint=3
Select Substring(@X,1,Len(@X)-@L)+Replicate('0',@L)
Iran58
شنبه 19 دی 1394, 09:20 صبح
سلام
Declare @X VarChar(Max)='4420101742'
Declare @L Tinyint=3
SelectSubstring(@X,1,Len(@X)-@L)+Replicate('0',@L)
سلام
ایان می توان این را تبدیل به یک رویه یا تابع کرد که هر بار این عمل انجام می شود داده داخل یک ستون قرار بگیرید مثلا
4420101742 در ستون اول
4420101740 در ستون دوم
4420101700 در ستون سوم
الی اخر
ASKaffash
یک شنبه 20 دی 1394, 06:42 صبح
سلام
متوجه منظور شما نمی شوم
Davidd
یک شنبه 20 دی 1394, 09:28 صبح
سلام. سوال شما واضح نیست. این کد کار شما رو راه میندازه :
declare @s varchar(50)='4420101742';
DECLARE @z VARCHAR(50)='00000000000000000000'
DECLARE @i INT=0
CREATE TABLE #temp
(x NVARCHAR(50))
WHILE @i<LEN(@s)
BEGIN
INSERT #temp VALUES(SUBSTRING(@s,1,LEN(@s)-@i)+SUBSTRING(@z,1,@i))
SET @i=@i+1;
END
select * FROM #temp
خروجی : 4420101742
4420101740
4420101700
4420101000
4420100000
4420100000
4420000000
4420000000
4400000000
4000000000
اگه به جای گفتن راه حل مسئله رو توضیح بدین بهتر میشه کمک کرد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.