使 T-SQL 函数区分大小写
Make a T-SQL function case sensitive
我有以下 T-SQL 函数
FUNCTION dbo.UrlEncode(@url NVARCHAR(1024))
RETURNS NVARCHAR(3072)
AS
BEGIN
DECLARE @urlReturn NVARCHAR(3072)
SET @urlReturn = REPLACE(@url,'Á','%c3%81') COLLATE Latin1_General_CS_AS
SET @urlReturn = REPLACE(@url,,'á','%c3%a1')
RETURN @urlReturn
END
但是如果我运行:
SELECT dbo.UrlEncode('Áreá')
它returns
%c3%a1re%c3%a1
我需要它 return
%c3%81re%c3%a1
有没有办法让函数区分大小写,我试过了COLLATE Latin1_General_CS_AS
但没有成功
谢谢
您应该在要替换的部分旁边指定区分大小写的排序规则。
然后应将第二个 REPLACE
应用于前一个 REPLACE
:
的结果
DECLARE @urlReturn NVARCHAR(3072)
SET @urlReturn = REPLACE(@url ,'Á' COLLATE Latin1_General_CS_AS ,'%c3%81' )
SET @urlReturn = REPLACE( @urlReturn ,'á','%c3%a1')
SELECT @urlReturn
我有以下 T-SQL 函数
FUNCTION dbo.UrlEncode(@url NVARCHAR(1024))
RETURNS NVARCHAR(3072)
AS
BEGIN
DECLARE @urlReturn NVARCHAR(3072)
SET @urlReturn = REPLACE(@url,'Á','%c3%81') COLLATE Latin1_General_CS_AS
SET @urlReturn = REPLACE(@url,,'á','%c3%a1')
RETURN @urlReturn
END
但是如果我运行:
SELECT dbo.UrlEncode('Áreá')
它returns
%c3%a1re%c3%a1
我需要它 return
%c3%81re%c3%a1
有没有办法让函数区分大小写,我试过了COLLATE Latin1_General_CS_AS
但没有成功
谢谢
您应该在要替换的部分旁边指定区分大小写的排序规则。
然后应将第二个 REPLACE
应用于前一个 REPLACE
:
DECLARE @urlReturn NVARCHAR(3072)
SET @urlReturn = REPLACE(@url ,'Á' COLLATE Latin1_General_CS_AS ,'%c3%81' )
SET @urlReturn = REPLACE( @urlReturn ,'á','%c3%a1')
SELECT @urlReturn