sql函数返回字符串并更改编码

5us2dqdw  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(270)

我的数据库表如下所示:

ID    | Name          | Name_Plain
1     | Łódź          |

我想实现的是,每当有insert或update到这个表中时,我希望sql自动将“name”转换成不带特殊字符的文本,并将其写入“name\u plan”。所以上面例子中的结果应该是“lodz”。
我创建了一个触发器,现在正在尝试编写一个用户定义的函数,该函数执行从输入文本到输出文本的转换。

ALTER FUNCTION [dbo].[usunogonki] (@t nvarchar(50))  RETURNS nvarchar(50)
AS 
BEGIN
    return @t
END;

问题是。。上面的函数几乎返回我想要的文本!它返回“l”ódz”。我知道这和编码有关,因为ł 变成了l和ó 保持不变。我想从这个函数中得到的是做我想做的事情,所以现在它应该返回我不变的文本。
我尝试了一些整理程序的技巧,比如

return (@t COLLATE sql_polish_cp1250_ci_as)

但没有成功。我错过了什么?

mi7gmzs6

mi7gmzs61#

试试这个:

DROP TABLE IF EXISTS #TEST;

CREATE TABLE #TEST
(
    [ID] INT IDENTITY(1,1)
   ,[Name] NVARCHAR(12)
   ,Name_PLain AS CAST([Name] AS VARCHAR(12)) COLLATE SQL_Latin1_General_CP1253_CI_AI 
);

INSERT INTO #TEST ([Name])
VALUES (N'Łódź')

SELECT *
FROM #TEST


创建一个可以具体化的计算列。或者基本上,坚持你的例子:

return (@t COLLATE SQL_Latin1_General_CP1253_CI_AI)

相关问题