关于oracle模糊查询的问题

我在运行的过程中出现的问题是这样的:表名是table,有一个字段名称为user_id,该列下面有一项的值是alferd,写的模糊查询语句是:select *from table where user_id like '[alferd]%',为什么查询不出来任何项目?而且不管[ ]中是什么字母都没办法查出来,是什么原因?麻烦具体解释一下模糊查询中[ ]的用法吧,谢啦!!
最新回答
号订婚

2024-07-09 16:14:20

select *from table where user_id like 'alferd%';
ORACLE查询不能加[]
像你这种情况只能使用
select * from table where user_id like 'a%' or user_id like 'l%' or user_id like 'f%' ;
如果你知道完整的值的话
select * from table where user_id in ('a','b');
可爱的狗蛋

2024-07-09 14:24:11

你这是照搬的某些资料上的语法里的语句吧。
这个中括弧是不要的:
select *from table where user_id like 'alferd%';

语法里的[]是指有这么一部分。而不是说引号里%边上有这个[]。
追问
不是,你这种跟有[  ]的用法不一样
追答
那可能是我没接触过带 [ ] 的。不过如果在单引号''里出现,[ ]就被当做模糊查询的字符串处理了。而且什么时候出现的带 [ ] 的模糊查询用法?
追问
书上一个原句就是select* from table where name like ‘[张王李]%',查出来的就是以姓张,姓王,姓李开头的名字
追答
嗯,我刚才也特意查了下资料,还真有中括弧的通配符。
说明是: [a-d](方括号):用来表示字符范围,在这里是从a到d。
不过这个是不是不是oracle里的用法,而是其他数据库的啊?

我看mysql支持正则。会有这种情况。

如果在oracle里使用这种方式,那就不是简单的like了。应该是regexp_like:
select *from table where regexp_like (user_id,'[张王李]%')
追问
我试了一下,还是不行。。。。伤不起,刚才查了,oracle里面有[  ]这个通配符呀
追答
嗯, 有的。我在我这里验证过了。不过用的就不是like了。就是刚才说的那个:
select *from table where regexp_like (user_id,'[张王李]%');
追问
你不试中文的,你试试用字母的看行不行,我用这个试了还是不行
追答
好,我试试。
刚才试了,汉字,数字,字符都可以
我们快乐呢

2024-07-09 07:06:49

[charlist] 字符列中的任何单一字符

我们希望从 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:
我们可以使用下面的 SELECT 语句:SELECT * FROM Persons
WHERE City LIKE '[ALN]%'

所以你的 select *from table where user_id like '[alferd]%'意思是,查询user_id中以a、l、f、e、r或d开头的数据。

按理说这个oracle应该是支持的,不过我刚刚试过了,也不行!??!
追问
就是啊,肿么回事。。。。
追答
我刚刚仔细查了一下oracle的like,只有
% 百分号
_ 下划线,单字符
两者方式,没有[]的写法。
一枕庭前雪

2024-07-09 15:33:36

select *from table where user_id like 'alferd%';这不就OK了 你很白啊 楼主
风花雪月夜

2024-07-09 08:29:37

这个是正则表达式啊。。。