enter image description hereI的输入是西里尔文,输出是拉丁文。在西里尔文中,我有一个变量,我可以将它插入到一个表中,但是我如何也为输出创建一个变量呢?我还需要为EN (输出参数)创建一个变量,这样我就可以将它插入到表中,或者如果有其他选择的话。
DECLARE @TEXT NVARCHAR(1000)
SET @TEXT = 'Днес'
DECLARE @EN NVARCHAR(1000)
SET @EN =''
insert into [Anatoli].[dbo].[logg]([date1],lo,[lo1]) values(GETDATE(),@TEXT,ЕN)
SELECT
@TEXT as BG
,replace(replace(replace(replace(replace(replace
(replace(replace(replace(replace(replace(replace(replace(replace
(replace(replace(replace(replace(replace(replace(replace(replace(replace
(replace(replace(replace(replace(replace(replace(replace
(@TEXT,'и','i'),'в','v'),'а','a'),'н','n'),'б','b' )
,'г','g'),'д','d'),'e','е'),'ж','zh'),'з','z'),'й','y'),'к','k')
,'л','l'),'м','m'),'о','o'),'п','p'),'р','r'),'с','s'),'т','t'),'у','u')
,'ф','f'),'х','h'),'ц','ts'),'ч','ch'),'ш','sh'),'щ','sht'),'ъ','a'),'ь','y')
,'ю','yu'),'я','yа') AS EN
图片上的预期结果
发布于 2021-08-09 02:13:34
如果你的西里尔-拉丁语翻译需要可重用,那么它在内联表值函数中将是最通用的,例如:
create function dbo.app_CyrillicToLatin(
@Cyrillic nvarchar(1000)
)
returns table as
return (
select [Latin] =
replace(replace(replace(replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(replace(replace(replace(
replace(replace(replace(replace(replace(replace(@Cyrillic,
N'и', N'i'), N'в', N'v'), N'а', N'a'), N'н', N'n'), N'б', N'b' ),
N'г', N'g'), N'д', N'd'), N'е', N'e'), N'ж', N'zh'), N'з', N'z'),
N'й', N'y'), N'к', N'k'), N'л', N'l'), N'м', N'm'), N'о', N'o'),
N'п', N'p'), N'р', N'r'), N'с', N's'), N'т', N't'), N'у', N'u'),
N'ф', N'f'), N'х', N'h'), N'ц', N'ts'), N'ч', N'ch'), N'ш', N'sh'),
N'щ', N'sht'), N'ъ', N'a'), N'ь', N'y'), N'ю', N'yu'), N'я', N'yа')
);
go
这使您可以根据需要灵活地设置变量,并以基于集合的方式转换INSERT、UPDATE和SELECT操作...
-- Usage 1, setting a variable
select @EN = Latin
from dbo.app_CyrillicToLatin(@TEXT);
-- Usage 2, translating during insert...
insert into [dbo].[logg] ([date1], [lo], [lo1])
select getdate(), @TEXT, Latin
from dbo.app_CyrillicToLatin(@TEXT);
-- Usage 3, translating during update...
update L
set [lo1] = Latin
from [dbo].[logg] L
cross apply dbo.app_CyrillicToLatin([lo]);
-- Usage 4, translating during select...
select [date1], [lo], [Latin] as [lo1]
from [dbo].[logg]
cross apply dbo.app_CyrillicToLatin([lo]);
https://stackoverflow.com/questions/68682347
复制