您还可以编写一个存储函数来处理这个问题 - 因为它只是对传入的数据进行操作,而不是在后台进行任何“隐藏”数据访问,所以它在性能方面应该表现得相当好。
试试这个:
CREATE OR ALTER FUNCTION dbo.TrimSpecialChar
(@Input NVARCHAR(500), @SpecialChar NCHAR(1))
RETURNS NVARCHAR(500)
AS
BEGIN
DECLARE @Result NVARCHAR(500);
-- if "special char" is not found - just return input
DECLARE @SpecCharIx INT = CHARINDEX(@SpecialChar, @Input);
IF (@SpecCharIx = 0)
SET @Result = @Input;
ELSE
SET @Result = SUBSTRING(@Input, 1, @SpecCharIx-1);
RETURN @Result;
END
然后你可以这样称呼它:
SELECT dbo.TrimSpecialChar(N'Testinput without special characters', N'<')
应该返回整个输入,而
SELECT dbo.TrimSpecialChar(N'Testinput with the < special characters', N'<')
只会回来
Testinput with the