我因为一个相对微不足道的问题而停滞不前. 这样一个简单的查询:

select distinct field_name,length(field_name) from table_a where
field_name similar to `2\[0-9\]\[0-9\]%`;

返回以下行:

field_name|length|
----------+------+
200       |     3|
203       |     3|
210       |     3|

但与此非常相似的是,其中只省略了表达式中的‘%’,不返回任何行:

  select distinct field_name,length(field_name) from table_a where 
         field_name similar to  '[23][0-9][0-2]';

field_name列被定义为CHAR(10). 问题可能是由于字段末尾的一些字符造成的,但我不知道如何消除它们. 你介意告诉我怎么解吗?

查阅了PostgreSQL文档和教程, 在谷歌上搜索,Stackoverflow没有成功.

推荐答案

快速猜测一下:在第一个查询中,您使用的是通配符%.因此,字符长度不能正好是3位数.也许您的数据中有一些尾随空格?

试着这样做:

SELECT DISTINCT field_name, LENGTH(field_name)
FROM table_a
WHERE TRIM(field_name) SIMILAR TO '[23][0-9][0-2]'

如果这解决了你的问题,请告诉我.

Sql相关问答推荐

在数据分区内执行确定

如果开始期间不存在PostgresSql回填数据

Select 起始参数和截止参数之间的间隔,包括与期间重叠的参数

将主表与历史表连接以获取主表的当前汇率以及历史表中的上一个和最后一个汇率

基于多列比较连接两个表

每年独特口味的冰淇淋数量

Pgsql-返回包含多行数据的行

在SQL查询中查找客户端的最短日期比较列和多行

两个月之间的WHERE CASE WHEN-ORA-00905:缺少关键字

SQL仅返回第一个字母在A-Z之间的值

使用CTE在SNOWFLAKE中创建临时表

不同计数的 Postgres PIVOT 表

具有分组条件的不同计数 (DAX)

BigQuery导航函数计算ID

IN子句使用的表值用户定义函数参数

为数组中的每个元素从表中收集最大整数

Select 给定类别列表(或更多类别)中的所有事物

多列上的 SQL UNIQUE 约束 - 它们的组合必须是唯一的还是至少其中之一?

在时态表和非时态表之间使用 EXCEPT 的 SQL 子查询给出表达式错误数

从 Pyspark 转换为具有多个分组条件的语句时的情况