sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan fjerner man eventuelle efterfølgende tal fra en streng?

Denne løsning burde være en smule mere effektiv, fordi den først tjekker, om strengen indeholder et tal, og derefter tjekker den, om strengen ender med et tal.

 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

Hvis du løber

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

Den vender tilbage

'More blah'


  1. Hvordan ændrer jeg SQL Server 2005 til at skelne mellem store og små bogstaver?

  2. Installation af ROracle på Mac OS X - hvad skal der til fra Oracle?

  3. Sådan håndteres null-feltet ved eksport af MYSQL-tabeller til CSV

  4. opdatere tabel med data fra anden tabel, hvis ikke null?