SUB 特殊字符需要从 Teradata 中的列中删除
SUB Special Char needs to be removed from Column in Teradata
需要从 Teradata 的列中删除 SUB 特殊字符,已尝试使用以下替换命令但它不起作用。
regexp_replace(column, X'1A', '', 1, 0, 'i')
OREPLACE(Column, X'1A' , ' ')
已尝试使用字母数字值将其删除,但一些其他字符也随之被删除,只需从字符串中删除该 SUB 字符。
regexp_replace(column, '[^0-9a-z]', '', 1, 0, 'i')
处理 错误字符 在 Teradata 中有点棘手,任何显式或隐式转换都会导致
6706 The string contains an untranslatable character.
如果您的输入列是 LATIN,则必须确保 oTranslate
的 all 参数是 LATIN 以避免转换。如果输入是UNICODE 所有参数必须是UNICODE.
CREATE VOLATILE TABLE vt
(
col_latin VARCHAR(20) CHARACTER SET Latin
,col_unicode VARCHAR(20) CHARACTER SET Unicode
) ON COMMIT PRESERVE ROWS;
INSERT INTO vt
(
'hello' || Chr(26) || 'world'
,Translate('hello' || Chr(26) || 'world' USING latin_to_unicode WITH ERROR)
);
SELECT
OTranslate(col_unicode -- UNICODE
,Chr(26) -- LATIN
,' ' -- UNICODE
)
FROM vt;
-- fails
SELECT
OTranslate(col_latin -- LATIN
,Chr(26) -- LATIN
,' ' -- UNICODE
)
FROM vt;
-- fails
SELECT
OTranslate(col_unicode -- UNICODE
,Translate(Chr(26) USING latin_to_unicode WITH ERROR) -- UNICODE
,' ' -- UNICODE
)
,OTranslate(col_latin -- LATIN
,Chr(26) -- LATIN
,Translate('' USING unicode_to_latin) -- LATIN
)
FROM vt;
-- returns both 'hello world' successfully
需要从 Teradata 的列中删除 SUB 特殊字符,已尝试使用以下替换命令但它不起作用。
regexp_replace(column, X'1A', '', 1, 0, 'i')
OREPLACE(Column, X'1A' , ' ')
已尝试使用字母数字值将其删除,但一些其他字符也随之被删除,只需从字符串中删除该 SUB 字符。
regexp_replace(column, '[^0-9a-z]', '', 1, 0, 'i')
处理 错误字符 在 Teradata 中有点棘手,任何显式或隐式转换都会导致
6706 The string contains an untranslatable character.
如果您的输入列是 LATIN,则必须确保 oTranslate
的 all 参数是 LATIN 以避免转换。如果输入是UNICODE 所有参数必须是UNICODE.
CREATE VOLATILE TABLE vt
(
col_latin VARCHAR(20) CHARACTER SET Latin
,col_unicode VARCHAR(20) CHARACTER SET Unicode
) ON COMMIT PRESERVE ROWS;
INSERT INTO vt
(
'hello' || Chr(26) || 'world'
,Translate('hello' || Chr(26) || 'world' USING latin_to_unicode WITH ERROR)
);
SELECT
OTranslate(col_unicode -- UNICODE
,Chr(26) -- LATIN
,' ' -- UNICODE
)
FROM vt;
-- fails
SELECT
OTranslate(col_latin -- LATIN
,Chr(26) -- LATIN
,' ' -- UNICODE
)
FROM vt;
-- fails
SELECT
OTranslate(col_unicode -- UNICODE
,Translate(Chr(26) USING latin_to_unicode WITH ERROR) -- UNICODE
,' ' -- UNICODE
)
,OTranslate(col_latin -- LATIN
,Chr(26) -- LATIN
,Translate('' USING unicode_to_latin) -- LATIN
)
FROM vt;
-- returns both 'hello world' successfully