2016-11-28 50 views
0

有些人可以用新的用戶定義函數複製CHARINDEX。 (使用instr)用mysql中的新用戶定義函數複製CHARINDEX

IF(CHARINDEX('(G)',v_username) = 0) THEN 

mysql版本。如果可以保持相同的功能,我的移植將變得更加順暢。

IF(INSTR(v_username,'(G)') = 0) THEN 

回答

1

是的,這可以做到。一種方法是創建包裝CharIndex的user-defined function

-- CHARINDEX wrapper. 
CREATE FUNCTION INSTR 
    (
     @Source  NVARCHAR(255),  -- Search this.. 
     @Find  NVARCHAR(255)  -- ...for this. 
    ) 
RETURNS NVARCHAR(255) 
AS 
BEGIN 
    RETURN CHARINDEX(@Find, @Source) 
END 

該方法的缺點是UDF無法在性能方面與原生函數進行競爭。

您可以通過查看common language runtime來降低影響。 CLR允許你編寫編譯爲本地代碼的函數,SP等。

所有的事情都考慮到了;我會建議你更新你的代碼。雖然他們可能會很漫長而痛苦,但遷移是一項一次性任務。