首页 > 解决方案 > SQL:如何检查列中是否包含字母

问题描述

所以基本上我的数据库中有一个 ic 列: ic 只包含数字,但该字段是一个字符串,因此人们也可以添加护照。我想写一个查询,它只向我显示只有数字的 ic:

SELECT applications.ic
FROM applications
WHERE applications LIKE '%[^0-9]%'

但它不起作用!

标签: sqlruby-on-railsrubypostgresqlactiverecord

解决方案


PostgreSQL支持POSIX 正则表达式:

SELECT applications.ic
FROM applications
WHERE applications.ic ~ '^\d+$'

这里的正则表达式是:

  • ^ — 匹配字符串的开头
  • \d — 匹配一个数字
  • + — 一个或多个修饰符应用于前一个匹配器
  • $ — 匹配字符串的结尾

推荐阅读