首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何去除希伯来口音标记

如何去除希伯来口音标记
EN

Database Administration用户
提问于 2014-11-30 02:52:49
回答 2查看 2K关注 0票数 17

我需要一个查尔编码技巧来去除希伯来口音标记。

样本在

之前

בְּרֵאשִׁ֖יתבָּרָ֣אאֱלֹהִ֑יםאֵ֥תהַשָּׁמַ֖יִםוְאֵ֥תהָאָֽרֶץ

样本后

בראשיתבראאלהיםאתהשמיםואתהארץ

EN

回答 2

Database Administration用户

发布于 2014-12-02 22:53:28

这是一个很有趣的问题,我在和日本人打交道之前就遇到了这个问题。我想找出你的问题人物,不过我希望这能让你找到问题人物。

首先,我把所有的NCHAR都放到了桌子上:

代码语言:javascript
运行
复制
SET NOCOUNT ON  

DECLARE @cnt INT = 1
DECLARE @sqlcmd NVARCHAR(512) = ''

CREATE TABLE #CHARS (
[CharOrder] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
[Result] NVARCHAR(4) 
)

WHILE @cnt < 65536
BEGIN

SELECT @sqlcmd = '
INSERT #CHARS
    ([Result] )
SELECT NCHAR(' + CAST(@cnt AS NVARCHAR) + ')
'

EXEC sys.sp_executesql @sqlcmd

SET @cnt +=1 
END

然后我找到了一个非重音字符:

代码语言:javascript
运行
复制
SELECT  c.CharOrder, c.Result
FROM    #CHARS AS c
WHERE c.Result = N'ר'
ORDER BY c.CharOrder

然后,我找到了希伯来字符所在的字符范围:

代码语言:javascript
运行
复制
SELECT  c.CharOrder, c.Result
FROM    #CHARS AS c
WHERE c.CharOrder >= 1488
AND c.CharOrder < 1523
ORDER BY c.CharOrder

但是试图找到你想要的重音字符,它们似乎没有出现,除了代码8501中的一个。

代码语言:javascript
运行
复制
SELECT  c.CharOrder ,
        c.Result
FROM    #CHARS AS c
WHERE   c.Result IN ( N'רֵ', N'א', N'שִׁ֖', N'י', N'ת', N'בְּ', N'בָּ', N'רָ֣',
                      N'א', N'אֱ', N'לֹ', N'הִ֑', N'י', N'ם', N'אֵ֥', N'ת',
                      N'הַ', N'שָּׁ', N'מַ֖', N'יִ', N'ם', N'וְ', N'אֵ֥', N'ת',
                      N'הָ', N'אָֽ', N'רֶ', N'ץ' )
ORDER BY c.CharOrder

因此,只要看看周围的字符,我就无法真正识别出与你的文字相匹配的任何其他文字。

代码语言:javascript
运行
复制
SELECT  c.CharOrder, c.Result
FROM    #CHARS AS c
WHERE c.CharOrder >= 8499
AND c.CharOrder < 8539
ORDER BY c.CharOrder

他们中的许多人似乎被扔成了那些模糊的小长方形。

再次,抱歉,这不是一个解决办法,但希望它有帮助。

票数 1
EN

Database Administration用户

发布于 2014-12-03 22:22:38

我用过数字表。有许多帖子解释了这是什么,为什么有用,以及如何有效地获得一个。

我不使用任何内置功能,以将重音字符转换为非重音等效。相反,我构建了一个查找列表,您将使用所需的转换填充该列表。当然,您必须使用nvarchar并将您的翻译定义为N'x'

感谢这个职位提供的行连接提示。

代码语言:javascript
运行
复制
drop table #Numbers;

select
    *
into #Numbers
from 
    (
    select *
    from (values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11)) as T(N)
    ) as xx;

drop table #Lookups;

select
    *
into #Lookups
from 
    (
    select *
    from (values ('a','m'),('b','n'),('c','o'),('d','p'),('e','q'),('m','z')) as T(CharFrom,CharTo)
    ) as xx;


drop table #Inputs;

select
    *
into #Inputs
from 
    (
    select *
    from (values ('abcdefghi')
                ,('abtcd')
        ) as T(Word)
    ) as xx;


select
     ix.Word as Original
    ,(
    select
        Coalesce(l.CharTo, SUBSTRING(i.word, n.N, 1)) -- do not alias
    from #Inputs as i
    cross apply #Numbers as n
    left join #Lookups as l
        on l.CharFrom = SUBSTRING(i.word, n.N, 1)
    where n.N <= LEN(i.Word)
    and i.Word = ix.Word
    for xml path ('')
    ) as Substituted
from #Inputs as ix;
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/83934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档