Sql 仅由元音组成的Postgres字符串

Sql 仅由元音组成的Postgres字符串,sql,string,postgresql,where-clause,Sql,String,Postgresql,Where Clause,我如何查询我的postgres数据库以在我的“name”列中查找仅由元音字符组成的字符串。我目前正在尝试: SELECT * FROM testdb WHERE aname ~* '[aeiouAEIOU]'; 但它似乎工作正常。您的代码检查字符串是否至少包含一个元音,这与仅包含元音不同 相反,请考虑: SELECT * FROM testdb WHERE aname ~* '^[aeiou]+$' ^和$分隔字符串的开头和结尾,这样可以确保字符串只包含元音(以及至少一个字符) 请注意,~

我如何查询我的postgres数据库以在我的“name”列中查找仅由元音字符组成的字符串。我目前正在尝试:

SELECT * FROM testdb WHERE aname ~* '[aeiouAEIOU]'; 

但它似乎工作正常。

您的代码检查字符串是否至少包含一个元音,这与仅包含元音不同

相反,请考虑:

SELECT * FROM testdb WHERE aname ~* '^[aeiou]+$'
^
$
分隔字符串的开头和结尾,这样可以确保字符串只包含元音(以及至少一个字符)

请注意,
~*
执行不区分大小写的匹配,因此不需要将大写元音放在字符类中

您也可以表示为:

SELECT * FROM testdb WHERE aname !~* '[^aeiou]'

哪些短语为:字符串不包含除元音以外的字符。

您的代码检查字符串是否至少包含一个元音,这与仅包含元音不同

相反,请考虑:

SELECT * FROM testdb WHERE aname ~* '^[aeiou]+$'
^
$
分隔字符串的开头和结尾,这样可以确保字符串只包含元音(以及至少一个字符)

请注意,
~*
执行不区分大小写的匹配,因此不需要将大写元音放在字符类中

您也可以表示为:

SELECT * FROM testdb WHERE aname !~* '[^aeiou]'

哪些短语为:字符串不包含除元音以外的字符。

具体来说,它不工作是什么意思?这种模式不适用于只包含元音的字符串。我正在尝试从testdb中选择*,其中aname~“[aeiouAEIOU]”;不是用*抱歉,但这不应该找到只有元音的字符串吗?不,这取决于Postgres是否需要全部匹配,要么是只有行的aname是单个元音,要么是只有行的aname在任何地方包含元音。如果你有一个更明显的问题,那就说明这个问题。anames像augue前庭ante.avi、sem.mov、curabitur convallis duis.mp3,所以包含空格和。我的意思是显示输入、预期和实际输出的问题。这些例子中没有一个只包含元音。你说它不起作用是什么意思?这种模式不适用于只包含元音的字符串。我正在尝试从testdb中选择*,其中aname~“[aeiouAEIOU]”;不是用*抱歉,但这不应该找到只有元音的字符串吗?不,这取决于Postgres是否需要全部匹配,要么是只有行的aname是单个元音,要么是只有行的aname在任何地方包含元音。如果你有一个更明显的问题,那就说明这个问题。anames像augue前庭ante.avi、sem.mov、curabitur convallis duis.mp3,所以包含空格和。我的意思是显示输入、预期和实际输出的问题。这些例子中没有一个只包含元音。