是否有任何函数可以在类似sql的语句中查找带有特殊字符的结果?

时间:2019-06-17 06:39:43

标签: mysql sql sql-like

我尝试使用LIKE成功从SQL获取数据,但结果超出了我的需求

这是我的一些数据

apple1
apple2
apple3
applejuice1
applej1
applej2

我的查询:

select * from apple where name like '%applej%'

目前我得到了:

applejuice1
applej1
applej2

我的预期输出:

applej1
applej2

4 个答案:

答案 0 :(得分:4)

您可以尝试一下,

SELECT * FROM apple where name LIKE '%applej_'

'_'用于表示SQL Server中的单个字符。 对于MS Access,您可以尝试

SELECT * FROM apple where name LIKE '*applej?'

答案 1 :(得分:3)

使用REGEXP这是可能的:

select * 
from apple 
where `name` REGEXP '^applej[0-9]'

Demo on db<>fiddle


更新

如果name的数据为applej1, applej2, applej15, applej109,则以下查询将起作用:

select * 
from apple 
where `name` REGEXP '^applej[0-9]+'

Demo on db<>fiddle

答案 2 :(得分:2)

您可以使用正则表达式,这将包含所有包含'applej'+ 0或1个以上字符的行

SELECT * FROM test WHERE  col1 REGEXP '^applej.?$'

这将找到所有包含'applej'+刚好还有1个字符的行

SELECT * FROM test WHERE  col1 REGEXP '^applej.{1}$'

如果“ applej”后面的数字可能包含几个数字

SELECT * FROM test WHERE  col1 REGEXP '^applej[0-9]+$'

当然,@ forpas在上面的评论中建议的LIKE就是您所需要的

答案 3 :(得分:0)

我找到了解决方案

SELECT * FROM apple WHERE MATCH(name) AGAINST('applej')