Teradata 如何解析字符串中的数值?

Teradata 如何解析字符串中的数值?,teradata,Teradata,Teradata问题。我需要选择那些列mycolumn的连续数字超过4位的行 我尝试了以下方法 SELECT id, SUBSTR( mycolumn, ((POSITION( '3' IN CHAR2HEXINT(TRANSLATE( mycolumn USING UNICODE_TO_LATIN) ))/2)+1), 5) mycolumndigits FROM mytable WHERE TRIM(mycolumndigits+' ') LIKE '_ _ _ _ _ ' 有时我会得

Teradata问题。我需要
选择那些列
mycolumn的连续数字超过4位的行

我尝试了以下方法

SELECT  id, SUBSTR( mycolumn, ((POSITION( '3' IN CHAR2HEXINT(TRANSLATE( mycolumn USING UNICODE_TO_LATIN) ))/2)+1),  5) mycolumndigits
FROM mytable
WHERE TRIM(mycolumndigits+' ') LIKE '_ _ _ _ _ '
有时我会得到一个不可翻译的字符异常,另一次是坏字符异常

请帮我改进一下


(注:我不允许使用Oracle函数(otranslate等)。我也不能创建存储过程和函数。DBA不会给我访问权限)

如果总是在字符串末尾找到数字,这应该可以: 检查最后五个字符是否为数字

cast(char2hexint((substring( mycolumn from (char_length(mycolumn) - 4)))) as char(10)) like '3_3_3_3_3_'

您的数据实际上是什么样子的?可以有多组数字吗?在上面的代码中,我尝试从遇到第一个数字的位置开始获取前5个字符的子字符串。然后在修剪之后,我想检查这个字符串是否有5个字符(大于4个)。谢谢。我尝试了
选择cast(char2hexint((子字符串(mycolumn from(char_length(mycolumn)-4)))作为char(10)),就像mytable中的'3_3_3_3_3_3',
一样,但它不起作用。错误:
expection介于“')”和“like”之间。
您必须在WHERE条件下编写它。如果您想要一个指示符列,可以在将(char2hexint((子字符串(mycolumn from(char_length(mycolumn)-4))转换为char(10))时使用CASE,如“3_3_3_3_3_3_3_3”),然后使用1 ELSE 0 ENDI尝试以下
从mytable中选择id,其中将(char2hexint((子字符串(mycolumn from(char_length(mycolumn)-4))转换为char(10))像“3_3_3_3_3_3”
并返回0 mycolumn的数据类型是什么?如果是字符,您可能需要添加TRIM:where cast(char2hexint((子字符串(TRIM(mycolumn))from(CHAR_length(TRIM(mycolumn))-4))作为CHAR(10)),如'3_3_3_3_3_3_3',您可以使用简单的“where char2hexint(mycolumn),如'%3_3_3_3%'”,但这可能会导致像'cscscc'这样的字符串出现罕见的误报。要100%正确,您需要一个类似于oTRANSLATE或RegExp的函数。。。