我有一个简单的SQL查询,帮助我找到它的值在字段文本中有一些英文字母。
这里是SQL:
select id,field1
from mytable
where mytable like '[A-Z]'
该查询在MS-ACCESS数据库中运行良好,但在QGIS和postgis查询上无法使用DB MANAGER,因为我认为Postgres无法识别字母表列表[A-Z]。
如果我使用它:
select id,field1
from mytable
where mytable like '%A%'
or mytable like '%B%'......
然后它有效,但我不喜欢这种方法。
在Postgres中:
select public.mytable.id,public.mytable.field1
from mytable
where public.mytable.mytable like '[A-Z]'
我尝试使用:
'*[A-Z]*'
'%[A-Z]%'
但是没有改变任何东西
答案 0 :(得分:6)
您可以使用~
运算符来评估正则表达式:
SELECT id, field1 FROM mytable WHERE mytable ~ '[A-Z]'
答案 1 :(得分:3)
在postgres中有一个用于匹配字符串到正则表达式的波浪号运算符
select * from some_table where some_column ~ '^[A-Z]$'
将选择some_column
仅包含大写字母的记录。 ~*
也用于不区分大小写的比较。