【问题标题】:Make a T-SQL function case sensitive使 T-SQL 函数区分大小写
【发布时间】:2015-04-06 21:05:01
【问题描述】:

我有以下 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á')

返回

%c3%a1re%c3%a1

我需要它返回

%c3%81re%c3%a1

有没有办法让函数区分大小写,我试过COLLATE Latin1_General_CS_AS但没有成功

谢谢

【问题讨论】:

    标签: sql sql-server case-sensitive collate


    【解决方案1】:

    您应该在要替换的部分旁边指定区分大小写的排序规则。 然后应该将第二个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  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2023-02-04
      相关资源
      最近更新 更多