Piy*_*yay 3 sql teradata regexp-replace
我需要清理一个字符列,为此我正在Teradata 14中使用REGEXP_REPLACE函数。
相同的代码可用于其他数据源(具有相同的LATIN编码)。
使用show table的数据定义给了我以下数据格式:
CREATE SET TABLE pp_oap_cj_t.dc_loss_fdr_kn ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
( PARENT_ID DECIMAL(38,0),
FS_MRCH_NM VARCHAR(25) CHARACTER SET LATIN NOT CASESPECIFIC
) PRIMARY INDEX ( PARENT_ID );
Run Code Online (Sandbox Code Playgroud)
我正在执行的查询如下:
CREATE TABLE pp_oap_pb_piyush_t.CHECKMERCHANT1 AS (
SELECT
FS_MRCH_NM,
REGEXP_REPLACE(trim(Upper(trim(REGEXP_REPLACE( (FS_MRCH_NM ) , '[^a-z]',' ',1,0,'i'))) ), '[[:space:]]+',' ',1,0,'i') as cleaned_merchant
FROM pp_oap_pb_piyush_t.CHECKMERCHANT)
WITH DATA PRIMARY INDEX (FS_MRCH_NM);
Run Code Online (Sandbox Code Playgroud)
错误
CREATE TABLE Failed. 6706: The string contains an untranslatable character.
Run Code Online (Sandbox Code Playgroud)
我需要快速解决这个瓶颈。
帮助真的很感激!谢谢 !!!!
Kir*_*an 5
引擎盖下的REGEXP_REPLACE将拉丁语字符集转换为Unicode。您已将变量定义为拉丁字符集。当数据包含无法从拉丁语转换为Unicode的内容时,您会看到错误。最好的办法是修复DDL以将字符集设置为Unicode而不是拉丁文。在您的代码中代替TR_LATE(FS_MRCH_NM使用LATIN_TO_UNICODE有错误)而不是FS_MRCH_NM应该可以。问题是当您具有不可翻译的字符时,它将导致空值。
| 归档时间: |
|
| 查看次数: |
7438 次 |
| 最近记录: |