Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да премахнете всички завършващи числа от низ?

Това решение трябва да е малко по-ефективно, защото първо проверява дали низът съдържа число, след което проверява дали низът завършва с число.

 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'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC SQLServerException:Този драйвер не е конфигуриран за интегрирано удостоверяване.

  2. Клаузата ORDER BY е невалидна в изгледи, вградени функции, производни таблици, подзаявки и изрази за общи таблици

  3. Scope_Identity() връща неправилна стойност?

  4. Върнатият тип данни варира в зависимост от данните в таблицата

  5. Изберете първото копие на запис