Teradata 中 VARCHAR 的长度

Length of VARCHAR in Teradata

我正在尝试编写一个只包含六位或七位客户编号的查询。这些数字存储在 Teradata 的 VARCHAR(30) 字段中。我尝试了以下方法:

...
AND LENGTH(STAFF_NO) > 5
AND LENGTH(STAFF_NO) < 8
...
...
AND CHARACTER_LENGTH(STAFF_NO) > 5
AND CHARACTER_LENGTH(STAFF_NO) < 8
...
...
AND CHAR_LENGTH(STAFF_NO) > 5
AND CHAR_LENGTH(STAFF_NO) < 8
...

但是所有这些都没有返回任何行;在每种情况下,查询仅查看字段的最大长度 (30) 而不是其中的实际字符数。

我如何过滤才能只检查字段中实际个字符的数量?

使用:

LENGTH(TRIM(BOTH FROM STAFF_NO)) AS STAFF_NO_LENGTH

这会删除字符串两边的空格。

您需要使用 CHARACTER_LENGTH 函数来获取 VARCHAR 列中字符的长度。

干杯!!

您使用的每个函数都应该 return 列值的长度 而不是列本身的最大长度。大概是STAFF_NO末尾多了个空格吧?尝试添加一个 TRIM 如下:

AND CHARS(TRIM(STAFF_NO)) BETWEEN 6 AND 7

这取决于您要如何处理尾随/前导空格。

包括:CHAR_LENGTH(STAFF_NO) BETWEEN 6 AND 7
排除:CHAR_LENGTH(TRIM(STAFF_NO)) BETWEEN 6 AND 7

无论是 VARCHAR 还是 CHAR 应该都没有区别。