sql >> Database >  >> RDS >> Sqlserver

Hoe verwijder je volgnummers uit een tekenreeks?

Deze oplossing zou wat efficiënter moeten zijn omdat het eerst controleert of de tekenreeks een getal bevat en vervolgens controleert of de tekenreeks op een cijfer eindigt.

 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

Als je rent

SELECT dbo.trim_ending_numbers('More blah 12321 123123 123132')

Het zal terugkeren

'More blah'


  1. Mybatis:wijs een deel van de SQL toe aan HashMap in POJO

  2. Verstreken tijd vanaf een bepaalde tijd in de database

  3. select * from table vs select colA, colB, etc. from table interessant gedrag in SQL Server 2005

  4. SQL Server 2016:Verbeteringen voor beschikbaarheidsgroepen