请问sql语句中like子句的问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 00:28:28
access数据库,有一个table的一个字段是文本类型,内容如下:
_1_
_1_5_8_
_6_7_
_10_
也就是由下划线分割的一些整数,整数个数不固定。
我的问题是,如果查询语句是:
select * from 表名 where 字段名 like '%_1_%'
那么内容为 _10_ 的记录也会被选中。
请问这是为什么?怎么解决呢?

多谢!

这是因为“_”是SQL的通配符,表示一个任意的字符。所以 _10_、_1_ 与 模式 _1_是匹配的。

解决办法:就是用“[ ]”把不是通配符的 _、% 包起来,用如下这句试试:

select * from 表名 where 字段名 like '%[_]1[_]%'

_ 是通配符 代表1个任意字符

两个解决方法
楼上是一种:
select * from 表名 where 字段名 like '%[_]1[_]%'

这也可以:
select * from 表名 where 字段名 like '%\_1\_%' escape '\'

而斜杠 \ 之后的 _ 解释为字符 _ 不再是个通配符