SQL Server 通過REVERSE實現C#中lastIndexOf的效果

老廖發表於2019-05-11

有時候我們會在SQL中碰到這樣的需求,要查詢某個字串最一個字元以後的字串!最近閒著看了下資料實現了這個!其實思路就是和C#中的lastIndexOf是一個道理。只要找到這個字元最後一次出現的位置就OK。

因為SQL中並沒有直接提供這樣的函式,所以我們可以利用CHARINDEX:查詢字元第一次出現的位置、REVERSE:反轉字串 這2個函式結合達到目的。

廢話不多說,好了以下貼上程式碼和註釋:


以上有不明白的地方也可以在評論中說出來!

另外 自己可以把這個封裝為一個標量函式做為通用!

CREATE FUNCTION [dbo].[fn_lastIndexOf]
    (
      @char NVARCHAR(10) ,
      @str NVARCHAR(200)
    )
RETURNS INT
AS
    BEGIN
        RETURN  CASE WHEN CHARINDEX(@char, @str) = 0 THEN 0 ELSE LEN(@str) - CHARINDEX(REVERSE(@char),REVERSE(@str)) END 
    END

GO
--擷取最後一個“-”以後的字串
SELECT dbo.fn_lastIndexOf('-','網商使用者標-立即申請-未通過稽核')
SELECT dbo.fn_lastIndexOf('-','as-d2-asdf6-5161-未通過稽核-hello word')





請喊我大龍哥最後編輯於:3年前

內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。

相關文章