如何在 SQL 中使用正则表达式,它只会找到一行

How to use regex in SQL which will find only one row

我有一个有 3 行的 table,我想使用 like 语句只获取第一行。当我使用 select value from table where value like '%Motor%%Fans%%9%' 时,它 returns 两行第一行和第二行。如何排除这些在 9 之前具有不同数值的行?

VALUE
Motor Fans Base 9
Motor Fans Base 49
Motor Fans Base 13

您可以使用 regexp_like():

where regexp_like(value, 'Motor.*Fans\D*9')

正则表达式细分:

Motor         # litteral string "Motor"
.*            # 0 to n characters
Fans          # litteral string "Fans"
\D*           # 0 to n non-digit characters
9             # a litteral "9"

您可以使用 like。只需在最后的 9 之前使用 space 并删除最后的 %:

where value like '%Motor%Fans% 9'

如果您还想匹配以 91 或 903 结尾的值,那么最后的通配符是合适的:

where value like '%Motor%Fans% 9%'