كدملي هايي كه 9 كاركتر است قبلش يك صفر قرار دهيم
سلام
1-كدملي بدون داش 10 كاركتر است من مي خواهم كدملي هايي كه 9 كاركتر است قبلش يك صفر و كدملي هايي كه 9 كاركتر است قبلش 2 صفر قرار دهد.
مثال 9 كاركتر : 987654321 تبديل كند به 0987654321
مثال 8 كاركتر : 87654321 تبديل كند به 0087654321
2- بانكي دارم كه تمام شماره كارمندهايش به شكل AHB123468 , AHB123456 , AHB123466 و.. كه AHB در اولش اضافي است بردارد و تبديل كند به: 123468 , 123456 , 123466 و..
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
1 -
RIGHT('00'+CodeMeli, 10)
2-
Cast(RIGHT(PersonnelNumber, LEN(PersonnelNumber)-3) as INT)
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
سلام
با تشكر از دوستمان كد كامل تست شده را اينجا مي گذارم:
-- (Tested) correct code-meli with 8 and 9 digits
UPDATE CardTable
SET employee_number = RIGHT('00'+employee_number, 10)
WHERE ( LEN(LTRIM(RTRIM(employee_number))) = 8 )
UPDATE CardTable
SET employee_number = RIGHT('0'+employee_number, 10)
WHERE ( LEN(LTRIM(RTRIM(employee_number))) = 9 )
-- (Tested) Remove 'AHB' from AHB123468 , AHB123456 , AHB123466
UPDATE CardTable
SET employee_number =
Cast(RIGHT(employee_number, LEN(employee_number)-3) as INT)
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
سلام
مشكل حذف AHB در ابتدا كاملا حل شد ، حال اگر AHB در اول نباشد يعني به صورت wdAHB142d,abAHB14555,22weAHB يعني در هرجاي دلخواه فيلد باشد راه حل چيست؟
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
برای حذف از تابع replace استفاده کنید.
replace(PerosnnelNumber, 'AHB', '')
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
نمی دونم مربوطه یا نه ولی برای اضافه کردن چی؟
مثال:
یه فیلد داریم که توش تاریخ به صورت رشته ذخیره شده حالا می خوایم رشته های 87/01/1 و 87/3/4 رو به این شکل در بیاریم 87/01/01 و 87/03/04
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
راستش راحت تر این کارو کردم. ممنون از راهنماییتون
UPDATE TABLE
SET FIELD=STUFF(FIELD,4,0,'0')
WHERE SUBSTRING(FIELD,4,2) LIKE '%/'
GO
UPDATE TABLE
SET FIELD=STUFF(FIELD,7,0,'0')
WHERE (SUBSTRING(FIELD,6,3) LIKE '/%') AND(LEN(SUBSTRING(FIELD,6,3))=2)
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
سلام و تشكر از دوستمان
و اين كاملش:
-- (Tested) Remove AHB anywhere (AHB123468 , wdAHB142d , abAHB14555 , 22weAHB)
UPDATE CardTable
SET employee_number = replace(employee_number, 'AHB', '')
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
توابع Padleft , PadRight این کار را انجام میدهد
Create Function PadRight(@cStr as nVarchar(250),@cLen as Int,@PadStr as nVarchar(250))
Returns nVarchar(250)
as
Begin
Declare @nTime as Int,@RetVal as nVarchar(250)
Set @nTime = @cLen - Len(@cStr)
Set @retVal = @cStr + Space(@nTime)
Return Replace(@retVal,' ',@PadStr)
End
Create Function PadLeft(@cStr as nVarchar(250),@cLen as Int,@PadStr as nVarchar(250))
Returns nVarchar(250)
as
Begin
Declare @nTime as Int,@RetVal as nVarchar(250)
Set @nTime = @cLen - Len(@cStr)
Set @retVal = Space(@nTime)+@cStr
Return Replace(@retVal,' ',@PadStr)
End
نقل قول: 9 كاركتر است قبلش يك صفر قرار دهد
پارامتر اول رشته مورد نظر
کاراکتر دوم طولی که میخوای رشته بعد از اضافه شدن کاراکتر داشته باشه
پارامتر سوم کاراکتری که میخوای به چپ یا راست رشته اضافه بشه
Select dbo.PadLeft('987654321',10,'0')