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
应该都没有区别。
我正在尝试编写一个只包含六位或七位客户编号的查询。这些数字存储在 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
应该都没有区别。