dota世界排名:请问SQL中IN的用法,急!

来源:百度文库 编辑:高考问答 时间:2024/04/30 02:35:08
我想在access中进行模糊查询,对name字段含有Wang等姓记录在其nationality字段中赋“china”值,写了下面的语句,但是不起作用,请问IN语句的括号内是不是不能用通配符?应该怎么来做模糊查询?多谢!!

UPDATE sheet1 SET sheet1.nationality = "china"
WHERE sheet1.NAME IN ('Wang*','Li*','Zhang*')
谢谢上面的回答,一楼的方法我试了一下,不行,还是老样子。用二楼的方法,要是我想做几百个姓名的模糊查询(中国人的姓就是多^_^),那语句岂不是得写很长?有跟in语句功能相近但能用通配符的函数吗?

你可以另外建个专门放百家姓的表啊,然后用

UPDATE sheet1 SET sheet1.nationality = "china"
WHERE sheet1.NAME IN (select name from newtable)

就可以了,或者使用exists来支持模糊,这样你可以在新表中输入'Li*'等姓氏

UPDATE sheet1 SET sheet1.nationality = "china"
WHERE exists(select name from newtable where sheet1.NAME like name)

用like吧,in的话,得保证后面是个集合。

IN一般是用来做子查询的,你需要模糊查询则需要用like加上%这个通配符

同意懒虫007,in中不能用通配符,通配必须和like一起用才有用。

UPDATE sheet1 SET sheet1.nationality = "china"
WHERE (sheet1.NAME like 'Wang%') or (sheet1.name like 'Li%') or (sheet1.name like 'Zhang%')

SQL语句中*号不是通配符,%是
'Wang*'->'Wang%'