SQL:如何检查列中是否包含字母

bil*_*lal 0 ruby sql postgresql activerecord ruby-on-rails

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

SELECT applications.ic
FROM applications
WHERE applications LIKE '%[^0-9]%'
Run Code Online (Sandbox Code Playgroud)

但它起作用了!

Ale*_*kin 8

PostgreSQL 支持 POSIX正则表达式:

SELECT applications.ic
FROM applications
WHERE applications.ic ~ '^\d+$'
Run Code Online (Sandbox Code Playgroud)

这里的正则表达式是:

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