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

SQL Server tương đương với ORACLE INSTR

Bạn đã được phát hiện trên nth_appearance đó không tồn tại trong SQL Server.

Sao chép một cách đáng xấu hổ một hàm ( Tương đương với INSTR của Oracle với 4 tham số trong SQL Server ) được tạo cho sự cố của bạn (xin lưu ý rằng @Occurs không được sử dụng theo cách giống như trong Oracle - bạn không thể chỉ định "lần xuất hiện thứ 3", nhưng "xuất hiện 3 lần"):

CREATE FUNCTION udf_Instr
    (@str1 varchar(8000), @str2 varchar(1000), @start int, @Occurs int)
RETURNS int
AS
BEGIN
    DECLARE @Found int, @LastPosition int
    SET @Found = 0
    SET @LastPosition = @start - 1

    WHILE (@Found < @Occurs)
    BEGIN
        IF (CHARINDEX(@str1, @str2, @LastPosition + 1) = 0)
            BREAK
          ELSE
            BEGIN
                SET @LastPosition = CHARINDEX(@str1, @str2, @LastPosition + 1)
                SET @Found = @Found + 1
            END
    END

    RETURN @LastPosition
END
GO

SELECT dbo.udf_Instr('x','axbxcxdx',1,4)
GO


DROP FUNCTION udf_Instr
GO


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi kết nối SQL gián đoạn lạ, các bản sửa lỗi khi khởi động lại, quay lại sau 3-5 ngày (ASP.NET)

  2. Làm thế nào để chạy một chương trình từ SQL?

  3. Truy vấn SQL để tìm tên cột trong Cơ sở dữ liệu

  4. Không thể đăng nhập vào SQL Server bằng Windows Authentication

  5. Cách khôi phục niềm tin trong ràng buộc khóa ngoại trong SQL Server (Ví dụ T-SQL)