यह समाधान थोड़ा अधिक कुशल होना चाहिए क्योंकि यह पहले यह देखने के लिए जांच करता है कि स्ट्रिंग में कोई संख्या है या नहीं, फिर यह जांचता है कि स्ट्रिंग किसी संख्या में समाप्त होती है या नहीं।
CREATE FUNCTION dbo.trim_ending_numbers(@columnvalue AS VARCHAR(100)) RETURNS VARCHAR(100)
BEGIN
--This will make the query more efficient by first checking to see if it contains any numbers at all
IF @columnvalue NOT LIKE '%[0-9]%'
RETURN @columnvalue
DECLARE @counter INT
SET @counter = LEN(@columnvalue)
IF ISNUMERIC(SUBSTRING(@columnvalue,@counter,1)) = 0
RETURN @columnvalue
WHILE ISNUMERIC(SUBSTRING(@columnvalue,@counter,1)) = 1 OR SUBSTRING(@columnvalue,@counter,1) = ' '
BEGIN
SET @counter = @counter -1
IF @counter < 0
BREAK
END
SET @columnvalue = SUBSTRING(@columnvalue,0,@counter+1)
RETURN @columnvalue
END
अगर आप दौड़ते हैं
SELECT dbo.trim_ending_numbers('More blah 12321 123123 123132')
यह वापस आ जाएगा
'More blah'