Sql 函数返回字符串并更改编码
我的数据库表如下所示:Sql 函数返回字符串并更改编码,sql,sql-server,tsql,character-encoding,Sql,Sql Server,Tsql,Character Encoding,我的数据库表如下所示: ID | Name | Name_Plain 1 | Łódź | 我想要实现的是,每当这个表中有insert或update时,我希望SQL能够自动将“Name”转换为文本,而不使用波兰语特殊字符,并将其写入“Name\u Plan”。因此,上述示例中的结果应为“Lodz” 我创建了一个触发器,现在正在尝试编写一个用户定义的函数,该函数将输入文本转换为输出文本 ALTER FUNCTION [dbo].[usunogon
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)
但是没有成功。
我缺少什么?试试这个:
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)
谢谢使用VARCHAR而不是NVARCHAR的作业是什么:非常感谢!