1

我在 Teradata Database 手册-SQL 参考 - 函数和运算符中找不到将字符串转换为二进制的任何函数。将字符串转换为字节也不起作用。

SELECT C1, C2 FROM table WHERE C1 < (cast( ('QREPI.\k'||'00'XC||'00'XC||'00'XC||'00'XC||'00' XC| |'00'XC||'00'XC||'00'XC||'00'XC||'00'XC||'00'XC||'00'XC||'00'XC||' ..') 作为 byte(24)) )); *** 失败 3532 BYTE 数据与其他类型之间的转换是非法的。语句# 1,信息 =0

有人知道 Teradata 是否提供了一种转换方式吗?

任何意见都受到高度赞赏。

4

2 回答 2

2

如果你只需要一个文字,你可以得到你的字符串的二进制等价物,如下所示:

SELECT C1, C2 FROM table
WHERE C1 < '51524550492e5c6b000000000000000000000000'xb

否则,对于以十六进制存储在表中的数据,可以通过编写新的 UDF 在 Teradata 中完成。或者您可以将其导出到文件中,使用程序对其进行转换,然后将其加载回来。

于 2009-03-31T17:44:43.837 回答
0

根据他们的博客,您应该能够通过隐式转换(但不是显式)来做到这一点。我认为这意味着:

SELECT C1, C2 
  FROM table 
  WHERE C1 < ('QREPI.\k'||'00'XC||'00'XC||'00'XC||'00'XC||'00'XC||
     '00'XC||'00'XC||'00'XC||'00'XC||'00'XC||'00'XC||'00'XC||'00'XC||' ..');

你试过吗?

于 2009-03-27T16:16:52.053 回答