2017-02-27 4 views
0

以下の関数は変更された単語を教えてくれますが、変更された列名も返します。どのように私は私に変更された文字列の列名を伝えるために、この機能を変更することができます。..2つの文字列結果を比較する方法古い列の変更テキストと新しい変更テキストを表示

のように=>「COMPANY_NAME:グリーン・マーケット」に変更「COMPANY_NAME:緑のスーパー・マーケット」

私はSQL Serverでのあなたは、テーブル値関数にそれを有効にする必要があり

 SELECT dbo.CharDiff('{ 
     "_id" : ObjectId("5877c25b7c32d41827306d63"), 
     "salt" : "ezmMjMn4A2cEb7ZZcc2cXQ==", 
     "company_name" : "green Market", 
     "designation" : "manager", 
     "email" : "[email protected]", 
     "fcm_token" : "eqTXWSrYd", 
     "full_name" : "John", 
     "mobile_number" : "123456789", 
     "password" : "Q2uQlO", 
     "user_type" : "Customer", 
     "is_active" : true, 
     "is_approved" : true,  
     "role" : "user" 
    }','{ 
     "_id" : ObjectId("5877c25b7c32d41827306d63"), 
     "salt" : "ezmMjMn4A2cEb7ZZcc2cXQ==", 
     "company_name" : "green super Market", 
     "designation" : "manager", 
     "email" : "[email protected]", 
     "fcm_token" : "eqTXWSrYd", 
     "full_name" : "John", 
     "mobile_number" : "123456789", 
     "password" : "Q2uQlO", 
     "user_type" : "Customer", 
     "is_active" : true, 
     "is_approved" : true,  
     "role" : "user" 
    }'); 

    Alter function dbo.CharDiff(@oldtext nvarchar(max), @newtext nvarchar(max)) 

returns nvarchar(max) as begin 
    declare @retval as nvarchar(max); set @retval = ''; 
    declare @c as integer; set @c = 0; -- counter 
    declare @t as nvarchar(max); 

    -- if the strings match then there is no difference 
    if @oldtext <> @newtext 
    begin 
     -- find the first non-matching character 
     while substring(@oldtext, @c, 1) = substring(@newtext, @c, 1) set @c = @c + 1; 

     -- remove up to the first non-matching character for both strings 
     set @newtext = RIGHT(@newtext, len(@newtext) - @c + 1); 
     set @oldtext = RIGHT(@oldtext, len(@oldtext) - @c + 1); 

     -- if the strings are different length then reverse them so you can start at 1 
     set @oldtext=reverse(@oldtext); 
     set @newtext=reverse(@newtext); 
     set @c = 0; -- reset the counter 

     while substring(@oldtext, @c, 1) = substring(@newtext, @c, 1) set @c = @c + 1; 
     set @newtext = RIGHT(@newtext, len(@newtext) - @c +2); 
     set @oldtext = RIGHT(@oldtext, len(@oldtext) - @c +2); 

     set @oldtext=ltrim(rtrim(reverse(@oldtext))); 
     set @newtext=ltrim(rtrim(reverse(@newtext))); 

     set @retval = '[' + @oldtext + '] to [' + @newtext + ']'; 
    end; 

    return @retval; 
end 

答えて

0

MEを助けてください新しいです。例については、hereを参照してください。

+0

これはどのように説明しますか –

関連する問題