如何在Teradata中将unicode翻译成拉丁语?

如何在Teradata中将unicode翻译成拉丁语?,unicode,teradata,latin,Unicode,Teradata,Latin,我的表包含一个字段lastName,即UNICODE 我需要实现SOUNDEX函数,但它不起作用,因为它只需要拉丁语。因此,我尝试将其转换为拉丁语,但仍然得到相同的错误只允许使用拉丁字母 这是我试过的 SEL * FROM tab_test WHERE SOUNDEX(REGEXP_REPLACE(lastName, '[^A-Z]', '')) = 'smith' SEL * FROM tab_test WHERE SOUNDEX(TRANSLATE(lastNameUSING u

我的表包含一个字段
lastName
,即
UNICODE

我需要实现
SOUNDEX
函数,但它不起作用,因为它只需要
拉丁语。因此,我尝试将其转换为
拉丁语
,但仍然得到相同的错误
只允许使用拉丁字母

这是我试过的

SEL * 
FROM tab_test
WHERE SOUNDEX(REGEXP_REPLACE(lastName, '[^A-Z]', '')) = 'smith' 



SEL * 
FROM tab_test
WHERE SOUNDEX(TRANSLATE(lastNameUSING unicode_to_latin)) = 'smith' 
我怎样才能纠正这个问题


编辑

以下是我按照德诺思的建议所做的尝试。但它仍然不起作用

     SEL * 
     FROM tab_test
     WHERE SOUNDEX(TRANSLATE(REGEXP_REPLACE(
     lastName,'[^a-zA-Z]','') USING   
     UNICODE_TO_LATIN))  = 's530' 
     
 SEL  lastName, REGEXP_REPLACE(lastName, '[^a-zA-Z]', '') lastName_regex 
 FROM (SEL * 
 FROM tab_test
 WHERE personId < 10 
 ) der 
 WHERE SOUNDEX(REGEXP_REPLACE(lastName, '[^a-zA-Z]', '')) = 's530'  

编辑2

这是一个不起作用的查询

     SEL * 
     FROM tab_test
     WHERE SOUNDEX(TRANSLATE(REGEXP_REPLACE(
     lastName,'[^a-zA-Z]','') USING   
     UNICODE_TO_LATIN))  = 's530' 
     
 SEL  lastName, REGEXP_REPLACE(lastName, '[^a-zA-Z]', '') lastName_regex 
 FROM (SEL * 
 FROM tab_test
 WHERE personId < 10 
 ) der 
 WHERE SOUNDEX(REGEXP_REPLACE(lastName, '[^a-zA-Z]', '')) = 's530'  

您的正则表达式也删除了小写的a到z

那就试试吧

REGEXP_REPLACE(lastName, '[^a-zA-Z]', '') -- explicitly add lowercase

顺便说一句,SOUNDEX(“smith”)的结果不是“smith”,而是“s530”。

您可能需要

[^a-zA-Z]+

i、 e,“+”

尝试使用UNICODE\u TO\u拉丁语,出现错误

我仍然会遇到同样的错误。正则表达式没有帮助,奇怪的是,这应该是可行的。您确切的Teradata版本是什么(
select*from dbc.dbcinfoV,其中InfoKey='release'
)?你能显示一些坏数据吗,仅仅是REGEXP_REPLACE的结果吗?发布版本是
14.00.07.14
坏数据看起来正常。我直接从SQL助手复制了它。上面的这个小示例不起作用。肯定还有其他原因,在使用SOUNDEX时,您显示的数据不会导致错误。
[^a-zA-Z]+