如何在 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%'
我有一个有 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%'