sql - 选择等于 10 位的行

标签 sql regex postgresql string-function

我有一个名为 idx 的表,其中包含以下数据

id dex          
-- ------------ 
1  Major 12354  
2  CITY 541 DER 
3  9987741221   
4  7845741      
5  789456 2121  

如何选择只有数字的行,它应该只有 10 位

预期输出是

id dex         
-- ----------- 
3  9987741221  
5  789456 2121 

最佳答案

您可以使用正则表达式来匹配您的条件 ^[0-9]{10,10}$,我使用了 replace() 函数来删除空的字符之间的空格(dex in id 5)

select * 
from idx 
where replace(dex,' ','')~'^[0-9]{10,10}$' -- or '^[0-9]{10,}$'

^[0-9]{10,10}$:

[0-9] - 获取数字

{10,10}$ - 所选字符串中的最大值和最小值均为 10


OR

使用char_length()

select *
from idx 
where  dex~'^[0-9]' 
       and char_length(replace(dex,' ','')) = 10 

关于sql - 选择等于 10 位的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33669808/

相关文章:

javascript - 正则表达式部分不匹配字符串

javascript - 使用javascript替换字符串值并保留部分替换字符串

python - 可以使 re.finditer() 从组中排除分隔符吗?

SQL SELECT ... WHERE IN 带有单独的 LIMIT,OFFSET 子句

c# - 使用 Entity Framework (C#) 覆盖 PostgreSql 中的序列

sql - Postgres 函数创建但不执行

sql - 在 SQL Server 中执行列值

sql - 将 SQL 查询中的多个值存储到存储过程变量

sql - Apache Spark SQL 按范围分组数据

mysql - 查询以获取所有用户 Y 的兴趣主题,其中 Y 与用户 X 共享 >=3 个兴趣