Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server Setara dengan ORACLE INSTR

Anda tepat pada nth_appearance tidak ada di SQL Server.

Menyalin fungsi tanpa malu-malu (Setara dengan INSTR Oracle dengan 4 parameter di SQL Server ) dibuat untuk masalah Anda (harap dicatat bahwa @Occurs tidak digunakan dengan cara yang sama seperti di Oracle - Anda tidak dapat menentukan "penampilan ketiga", tetapi "terjadi 3 kali"):

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. Bagaimana cara memeriksa apakah string koneksi valid?

  2. Bagaimana cara membuat kueri loop sql untuk memeriksa perbedaan antara nilai?

  3. Bagaimana cara membuat ringkasan dengan bergabung ke satu tabel dengan SQL Server?

  4. Pilih database yang hanya berisi tabel tertentu

  5. Bagaimana cara memantau perintah t-sql saja di SQL Profiler?