对于这两个模糊查询语句:
1.select * from test where name like '%?%'
2.select * from test where name like '%'||?||'%'
(其中?表示参数)
是等价的,一样的,但为什么 我在JAVA程序中用了第一个却查不出结果,而第2个却能查到
这是为什么 呢?
1.select * from test where name like '%?%'
2.select * from test where name like '%'||?||'%'
(其中?表示参数)
是等价的,一样的,但为什么 我在JAVA程序中用了第一个却查不出结果,而第2个却能查到
这是为什么 呢?
这时候是正确的。
insert into table values('?')
就应该不对了吧。道理相同。
但是如果insert的话。。就要考虑引号的问题了。
insert into table values(?)
这时候是正确的。
insert into table values('?')
就应该不对了吧。
?表示的是 传进去的参数,JDBC里面的预编译 一样 .还有楼上的 insert into table values('?') 这谁都知道是错误的
2.select * from test where name like '%||?||%'
这两个才是等价的。
事实似乎和你想的不太一样
我在pl/sql developer中运行了
select * from test where name like '%'||?||'%'
这个是报错的。机器只会理解成
select * from test where name like '%'
这样查出来是所有的姓名
如果像楼主那样写机器是识别不了的
我已经说的很明白了 ? 表示的是参数 ,不要单纯的从数据库方面去看到 要放到JAVA代码中去看
哎 怎么就没有人明白的呢
10楼说 '%?%' 和 '%'||'?'||'%' 才应当是等价的 也是没有明白
如果9楼的执行select * from test where name like '%'||'?'||'%'保证是不会抱错了
如果大家 使用过JDBC 或者 SPRING 的话 就应该明白这?到底表示什么意思了