sql中两张表如何进行LIKE关联
a表:b表字段4里面已经包含了运算符,like对应的字段5中也有%selecta.id,a.“字段2”,b.”字段3“froma,bwherea."字段1"中间这个运算符...
a表:
b表字段4里面已经包含了运算符,like对应的字段5中也有%
select a.id , a.“字段2” , b.”字段3“ from a,bwhere a."字段1" 中间这个运算符应该怎么弄 b."字段5“............不会了,这个运算符要使用b.字段4 展开
b表字段4里面已经包含了运算符,like对应的字段5中也有%
select a.id , a.“字段2” , b.”字段3“ from a,bwhere a."字段1" 中间这个运算符应该怎么弄 b."字段5“............不会了,这个运算符要使用b.字段4 展开
3个回答
展开全部
方法很多,下面你可以通过join ,exist, where 和不同的表达式 instr, like , regexp等找出很多种写法。
||在MySQL中一般情况下是做OR运算,而不是标准SQL中的字符串加。
SQL code?
1
2
3
4
5
6
7
8
9
10
11
mysql> select * from a1 where exists (select id from b1 where INSTR(a1.id,id));
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.08 sec)
mysql>
SQL code?
1
2
3
4
5
6
7
8
9
10
11
12
mysql> select * from a1 where exists (select id from b1 where a1.id like concat(
'%',id,'%'));
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.06 sec)
mysql>
SQL code?
1
2
3
4
5
6
7
8
9
10
11
mysql> select * from a1 where exists (select id from b1 where a1.id regexp id);
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.05 sec)
mysql>
SQL code?
1
2
3
4
5
6
7
8
9
10
11
12
mysql> select distinct a1.id
-> from a1 inner join b1 on a1.id regexp b1.id;
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.01 sec)
mysql>
SQL code?
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> select distinct a1.id
-> from a1 , b1
-> where INSTR(a1.id,b1.id);
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.02 sec)
mysql>
||在MySQL中一般情况下是做OR运算,而不是标准SQL中的字符串加。
SQL code?
1
2
3
4
5
6
7
8
9
10
11
mysql> select * from a1 where exists (select id from b1 where INSTR(a1.id,id));
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.08 sec)
mysql>
SQL code?
1
2
3
4
5
6
7
8
9
10
11
12
mysql> select * from a1 where exists (select id from b1 where a1.id like concat(
'%',id,'%'));
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.06 sec)
mysql>
SQL code?
1
2
3
4
5
6
7
8
9
10
11
mysql> select * from a1 where exists (select id from b1 where a1.id regexp id);
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.05 sec)
mysql>
SQL code?
1
2
3
4
5
6
7
8
9
10
11
12
mysql> select distinct a1.id
-> from a1 inner join b1 on a1.id regexp b1.id;
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.01 sec)
mysql>
SQL code?
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> select distinct a1.id
-> from a1 , b1
-> where INSTR(a1.id,b1.id);
+--------+
| id |
+--------+
| 张三千 |
| 李四万 |
| 王五 |
+--------+
3 rows in set (0.02 sec)
mysql>
展开全部
我的测试如下:
cjf@CJF>create table t1(col1 varchar2(50));
表已创建。
cjf@CJF>create table t2(col varchar2(20));
表已创建。
cjf@CJF>insert into t1 values('abcddjlkdndhb');
已创建 1 行。
cjf@CJF>insert into t2 values('abcd');
已创建 1 行。
cjf@CJF>commit;
提交完成。
cjf@CJF>select count(*) from t1,t2 where t1.col1 like t2.col||'%';
COUNT(*)
----------
1
cjf@CJF>
cjf@CJF>create table t1(col1 varchar2(50));
表已创建。
cjf@CJF>create table t2(col varchar2(20));
表已创建。
cjf@CJF>insert into t1 values('abcddjlkdndhb');
已创建 1 行。
cjf@CJF>insert into t2 values('abcd');
已创建 1 行。
cjf@CJF>commit;
提交完成。
cjf@CJF>select count(*) from t1,t2 where t1.col1 like t2.col||'%';
COUNT(*)
----------
1
cjf@CJF>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个只能用动态SQL, 单写是不行的
追问
能否举个例子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询