如何在SQL Query中将外来字符转换为英文字符?

时间:2011-03-16 21:59:33

标签: sql sql-server-2008

我必须创建sql函数,将特殊字符,国际字符(法语,中文...)转换为英语。

sql中是否有任何特殊功能,我能搞定吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

如果您使用的是英文名称,那么这是可以实现的目标,因为它们都已将名称作为Unicode标准的一部分发布。

参见例如:

然后,您的任务就是将unicode字符列表转换为包含100,000行左右的表。不幸的是,您获得的名称将是ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM

另一方面,如果你想真正翻译意思,你需要看机器翻译软件。微软和谷歌都有着名的云翻译产品,还有其他一些经过深思熟虑的产品。

答案 1 :(得分:2)

我认为简短的回答是你不能,除非你缩小你的要求很多。您似乎想要采用文本样本A,并将其转换为罗马化文本B.

有一些问题需要解决:

  • 语言通常不会在单个字符的基础上进行罗马化。一个角色的正确发音通常取决于它周围的字符和单词,甚至可以只对一个单词有特殊规则(学习英语可能很难,因为它充满了这些,借用了多种语言的单词而不规范拼写)。

  • 即使你为你想支持的每种语言编写规则,你仍然会有同形异义词,使用完全相同的字符拼写的单词,但是具有不同的发音(因而是罗马化)取决于其含义 - 对于例如“母猪”意思是猪,或“播种”(w是沉默的)意味着种植种子。

  • 然后你会遇到你正在罗马化的语言问题:字符甚至单词并非一种语言所独有,但实际意义和罗马化可能会有所不同。事实上,许多语言都包含来自这些语言的贷款单词,它们共享字符,这使得任何尝试自动确定您试图将哪种语言进行罗马化都很复杂。

考虑到所有这些困难,你实际想要达到的目标是什么(你解决了什么问题)?

您希望将“转换”为英语的语言中的法语 - 但法语(带有重音字符)已经用罗马字母书写。即使是英语中使用的日常单词偶尔会使用重音字符,尽管这些单词很少见,即使它们被省略也能理解其含义和发音(例如简历)。

您的问题是否真的无法存储unicode /扩展ASCII?有很多方法可以纠正或解决这个问题。