Исходя из вашего недавнего редактирования, описанную вами функцию невозможно будет создать. Это близко к тому, что вы намеревались? Если бы вы могли предоставить рабочий пример своей функции и значения @ rawtext , которое вы ей передаете, это помогло бы выяснить вашу проблему.
CREATE FUNCTION [dbo].[ReplaceString]
(
@rawtext VarChar(400)
,@numbernum VarChar(15)
,@name VarChar(25)
,@userno BigInt
,@password VarChar(50)
,@email VarChar(50)
,@keyword VarChar(40)
,@litext VarChar(500)
,@datecreated DateTime
,@company VarChar(30)
,@end VarChar(140)
,@start VarChar(140)
,@remove VarChar(200)
)
RETURNS VarChar(450)
As
Begin
Declare @result VarChar(450)
-- Set default values for null parameters
Select
@rawtext = IsNull(@rawtext, '')
,@numbernum = IsNull(@numbernum, '')
,@name = IsNull(@name, '')
,@userno = IsNull(@userno, 0)
,@password = IsNull(@password, '')
,@email = IsNull(@email, '')
,@keyword = IsNull(@keyword, '')
,@litext = IsNull(@litext, '')
,@datecreated = IsNull(@datecreated, GetDate())
,@company = IsNull(@company, '')
,@end = IsNull(@end, '')
,@start = IsNull(@start, '')
,@remove = IsNull(@remove, '')
Select @result = Replace( @rawtext , '@@name@@', @name)
Select @result = Replace( @result , '@@number@@', @numbernum)
Select @result = Replace( @result , '@@company@@', @company )
Select @result = Replace( @result , '@@ssn@@', @numbernum )
Select @result = Replace( @result , '@@message@@', @litext )
Select @result = Replace( @result , '@@date@@', CAST(@datecreated As VarChar(10)) )
Select @result = Replace( @result , '@@keyword@@', @keyword )
Select @result = Replace(@litext, @keyword, '''' )
Select @result = Replace( @result , '@@withoutkeyword@@', @litext)
Select @remove = Replace(@remove, '@@company@@', @company)
Select @start = Replace(@start, '@@company@@', @company)
Select @end = Replace(@end, '@@company@@', @company )
Select @result = Replace( @result , '@@Settings[END]@@',@end )
Select @result = Replace( @result , '@@Settings[START]@@', @start )
Select @result = Replace( @result , '@@Settings[REMOVE]@@', @remove)
Return @result
End
Go
Документация по REPLACE указывает, что возвращает NULL, если любой из аргументов равен NULL . Вам следует рассмотреть возможность использования функции ReplaceString с помощью функции ISNULL для замены любых входных данных ненулевыми значениями, такими как пустая строка.
Declare @value nvarchar(10),
@expression nvarchar(10),
@replacement nvarchar(10)
Select @value = 'Some Value',
@expression = Null,
@replacement = 'Value2'
-- Result is NULL
Select REPLACE(@value, @expression, @replacement) as 'Result'
Select @expression = 'Value'
-- Result is 'Some Value2'
Select REPLACE(@value, @expression, @replacement) as 'Result'