通过SQL根据匹配模式从表中检索名称?

Posted

技术标签:

【中文标题】通过SQL根据匹配模式从表中检索名称?【英文标题】:Retrieve the name from table based on matching Pattern through SQL? 【发布时间】:2014-01-02 05:57:11 【问题描述】:

我有一个名为 Student 的表名,其中包含以下列及其值

roll_no      name       marks
123          rabes      80
567          baban      78
798          rees       98
345          tem        89
321          tom        82
987          lakhen     95
787          Mekkan     92

我想过滤只有 a 或只有 e 或两者一起的学生姓名。我写了这样的查询:

SQL: select name from Student where name like '%a%' and name like '%e%'

查询的输出:

roll_no      name       marks
123          rabes      80
567          baban      78
798          rees       98
345          tem        89
987          lakhen     95
787          Mekkan     92

上述方法对我来说效果很好,但我想要具有单一匹配模式的查询(使用单一类似)。考虑 roll_no 是主键。请帮帮我。

【问题讨论】:

【参考方案1】:

使用通配符 (pattern matching),

SELECT DISTINCT name from `Student` WHERE `name` REGEXP '[ae]'

【讨论】:

感谢您的回复,但还有一个要求,例如名称中的“a”和“e”的顺序也可以互换..我已经编辑了查询..请参考 我已经更新了我的答案。如果您仍然遇到任何问题,请告诉我 我仍然面临同样的问题,即选择了 0 行【参考方案2】:

你试过了吗:

   select name from Student  where name like '%[ae]'

【讨论】:

感谢您的回复,但它不起作用...因为没有错误但选择了 0 行...建议其他方法 请检查我更新的代码:从学生中选择名称,其中名称类似于 '%[ae]' 请检查并告诉我它是否工作正常。

以上是关于通过SQL根据匹配模式从表中检索名称?的主要内容,如果未能解决你的问题,请参考以下文章

sql从表中检索数据并使它们链接

是否可以在 sql 中按匹配某些模式的字段进行分组?

Entity Framework Core 从表中检索单个对象

文本检索

sql 从表中选择未出现在第二个表中的所有内容

如何从表中检索我的最后一个插入行?