我尝试使用LIKE
成功从SQL获取数据,但结果超出了我的需求
这是我的一些数据
apple1
apple2
apple3
applejuice1
applej1
applej2
我的查询:
select * from apple where name like '%applej%'
目前我得到了:
applejuice1
applej1
applej2
我的预期输出:
applej1
applej2
答案 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]'
更新:
如果name
的数据为applej1, applej2, applej15, applej109
,则以下查询将起作用:
select *
from apple
where `name` REGEXP '^applej[0-9]+'
答案 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')