Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak usunąć końcowe liczby z ciągu?

To rozwiązanie powinno być nieco bardziej wydajne, ponieważ najpierw sprawdza, czy ciąg zawiera liczbę, a następnie sprawdza, czy ciąg kończy się liczbą.

 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

Jeśli biegasz

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

Powróci

'More blah'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server - Nieprawidłowe znaki w nazwach parametrów

  2. Jak znaleźć login, nazwę użytkownika bazy danych lub role użytkownika domeny sqlserver, który nie ma własnego loginu?

  3. Czasami pojawia się wyjątek SqlException:upłynął limit czasu

  4. Nie można wstawić wartości null do datetime na serwerze sql

  5. Błąd nieprawidłowej nazwy kolumny podczas wywoływania wstawiania po utworzeniu tabeli