sql >> Databáze >  >> RDS >> Sqlserver

Jak odstranit všechna koncová čísla z řetězce?

Toto řešení by mělo být o něco efektivnější, protože nejprve zkontroluje, zda řetězec obsahuje číslo, a poté zkontroluje, zda řetězec končí číslem.

 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

Pokud spustíte

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

Vrátí se to

'More blah'


  1. Základy systému Remember-me

  2. Použití shell skriptu pro vložení dat do vzdálené databáze MYSQL

  3. Jak uložit video do databáze pomocí c#?

  4. Povolit, aby číslo začínalo nulou, když je uloženo v poli mysql integer