Sql 筛选不包含数字的记录

Sql 筛选不包含数字的记录,sql,hiveql,Sql,Hiveql,我有一个以字符串格式显示数字的表。理想情况下,表应该包含字符串格式的10位数字,但它有许多垃圾值。我想过滤掉那些本质上不理想的记录 下面是我的示例表: +---------------+--------+----------------------------------+ | ID_UID | Length | ##Comment | +---------------+--------+------------------------

我有一个以字符串格式显示数字的表。理想情况下,表应该包含字符串格式的10位数字,但它有许多垃圾值。我想过滤掉那些本质上不理想的记录

下面是我的示例表:

+---------------+--------+----------------------------------+
|    ID_UID     | Length |            ##Comment             |
+---------------+--------+----------------------------------+
| +112323456705 |     13 | Contains special character       |
|  4323456432   |     11 | Contains blank                   |
| 3423122334    |     10 | As expected, 10 character number |
| 6758439239    |     10 | As expected, 10 character number |
| 58_4323129    |     10 | Contains special character       |
| 4567$%6790    |     10 | Contains special character       |
| 45684938901   |     11 | Is 11 characters                 |
| 4568 38901    |     10 | Contains blank                   |
+---------------+--------+----------------------------------+
预期产出:

+---------------+--------+----------------------------+
|    ID_UID     | Length |         ##Comment          |
+---------------+--------+----------------------------+
| +112323456705 |     13 | Contains special character |
|  4323456432   |     11 | Contains blank             |
| 58_4323129    |     10 | Contains special character |
| 4567$%6790    |     10 | Contains special character |
| 45684938901   |     11 | Is 11 characters           |
| 4568 38901    |     10 | Contains blank             |
+---------------+--------+----------------------------+
基本上我想要的是所有没有10位数的记录

我尝试了以下查询:

SELECT *
FROM t1
WHERE ID_UID LIKE '%[^0-9]%'
但这不会返回任何记录

已经为相同的项目创建了一个

另外,列的长度和注释本质上是说明性的。

您希望RLIKE不喜欢:

请注意,%是一个LIKE通配符,而不是正则表达式通配符。此外,正则表达式与模式匹配,因此字符串的开头和结尾不需要通配符

如果要查找非十位数的值,请明确:

SELECT *
FROM t1
WHERE ID_UID NOT RLIKE '^[0-9]{10}$'

我还想确保长度为10个字符。在上面的查询中,我也排除了原始表中的第7条记录所有数字,但长度为11。另外,当我尝试从t1中选择*时,其中ID像“[0-9]”。我正在获取所有记录,而我只希望记录具有所有数字。考虑到我已经删除了^标志。
SELECT *
FROM t1
WHERE ID_UID NOT RLIKE '^[0-9]{10}$'