【问题标题】:Teradata REGEXP_SPLIT_TO_TABLE Inserting Spaces between NumbersTeradata REGEXP_SPLIT_TO_TABLE 在数字之间插入空格
【发布时间】:2015-03-07 01:59:28
【问题描述】:

我在使用 Teradata 的 REGEXP_SPLIT_TO_TABLE 时遇到问题。它正确地分隔了结果,但它在每个单独的数字之间插入了空格。我使用了CHAR2HEXINT,发现空间的十六进制是00。这是我正在使用的语句:

SELECT *  
FROM TABLE(
       REGEXP_SPLIT_TO_TABLE('2625 1410', '2625 1410', '[ \t\r\n\v\f]' , 'i') 
         RETURNS (outkey VARCHAR(250), token_ndx INTEGER, token VARCHAR(220) )
   ) AS t1;

它返回 2 6 2 5 作为一行和 1 4 1 0 作为一行。我希望结果是 2625 作为一行和 1410 作为一行。我做错了什么是添加空格吗?有没有办法摆脱空间?提前致谢。

【问题讨论】:

  • 试试这个,只替换 REGEXP_SPLIT_TO_TABLE('2625 1410', '2625 1410', '[ \t]' , 'i')

标签: sql regex teradata


【解决方案1】:

我遇到了同样的问题,发现 REGEXP_SPLIT_TO_TABLE 返回 UNICODE 字符串 :-) 但是由于您没有为 RETURN 列指定字符集,因此解析器假定为 LATIN,这会导致二进制零。

只需添加 CHARACTER SET UNICODE:

SELECT *  
FROM TABLE(
       REGEXP_SPLIT_TO_TABLE('2625 1410', '2625 1410', '[ \t\r\n\v\f]' , 'i') 
         RETURNS (outkey VARCHAR(250) CHARACTER SET UNICODE
                 ,token_ndx INTEGER
                 ,token VARCHAR(220) CHARACTER SET UNICODE )
   ) AS t1;

【讨论】:

  • 谢谢。这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2021-01-02
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
相关资源
最近更新 更多