Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để loại bỏ bất kỳ số cuối cùng nào khỏi một chuỗi?

Giải pháp này sẽ hiệu quả hơn một chút vì trước tiên nó kiểm tra xem chuỗi có chứa một số hay không, sau đó sẽ kiểm tra xem chuỗi có kết thúc bằng một số hay không.

 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

Nếu bạn chạy

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

Nó sẽ trở lại

'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:Kiểm tra tham chiếu khi thay đổi chữ ký hàm / thủ tục

  2. Đặt hồ sơ công khai mặc định cho thư cơ sở dữ liệu (SSMS)

  3. OLTP trong bộ nhớ:Có gì mới trong SQL Server 2016

  4. Cách tìm bảng chứa một cột cụ thể trong SQL Server

  5. Cách dễ nhất để xem trước dữ liệu từ cột hình ảnh là gì?