求大神指教!数据库模糊查询!如何用多配少!

玉立琦 2014-07-21 09:18:20
select * from table where c1 like %n1%
其中n1的长度大于要匹配的c1中的长度,那需要如何才能把c1中符合条件的查出来!
...全文
500 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiyiwan 2014-07-21
  • 打赏
  • 举报
回复
或者 select * from table,t1 where t1.c1 like '%'||ci||'%' union select * from table,t1 where ci like '%'||t1.c1||'%';
shiyiwan 2014-07-21
  • 打赏
  • 举报
回复
引用 24 楼 yuliqi0429 的回复:
会不会有重复项?
肯定会有,加distinct去除一下就可以了。
玉立琦 2014-07-21
  • 打赏
  • 举报
回复
引用 20 楼 zlloct 的回复:
[quote=引用 19 楼 yuliqi0429 的回复:] [quote=引用 17 楼 zhangxuefeng361 的回复:] 需求是包含关系吗?
c1 列中的数据长度不确定! n1的值不确定,但是要用n1 去匹配c1 列中相似的列, 例如:用“北京中关村股份有限公司” 去匹配“北京中关村” 也有可能是 , 用“北京中关村”去匹配“北京中关村股份有限公司”[/quote] select * from table,t1 where t1.c1 like '%'||ci||'%' or ci like '%'||t1.c1||'%'; [/quote] 会不会有重复项?
rulky 2014-07-21
  • 打赏
  • 举报
回复
引用 10 楼 yuliqi0429 的回复:
[quote=引用 9 楼 zlloct 的回复:] [quote=引用 8 楼 yuliqi0429 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件[/quote] 我知道啊,这又有什么关系呢,达不到你的要求?[/quote] id ci 1 北京中关村 2 北京朝阳区 3 北京海淀区 4 北京丰台区 5 北京鸟巢 6 北京石景山区 select * from table where ci like "%北京中关村股份有限公司%" 其结果查询的不是“北京中关村”,而是空 而我想要的结果为“北京中关村”。 [/quote] select * from table where ci like "北京中关村股份有限公司%" 试试这个
hdgqlyl 2014-07-21
  • 打赏
  • 举报
回复
按照你们的方法貌似不行啊
玉立琦 2014-07-21
  • 打赏
  • 举报
回复
引用 18 楼 zlloct 的回复:
[quote=引用 16 楼 yuliqi0429 的回复:] [quote=引用 15 楼 zlloct 的回复:] [quote=引用 14 楼 yuliqi0429 的回复:] [quote=引用 12 楼 zlloct 的回复:] [quote=引用 10 楼 yuliqi0429 的回复:] [quote=引用 9 楼 zlloct 的回复:] [quote=引用 8 楼 yuliqi0429 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件[/quote] 我知道啊,这又有什么关系呢,达不到你的要求?[/quote] id ci 1 北京中关村 2 北京朝阳区 3 北京海淀区 4 北京丰台区 5 北京鸟巢 6 北京石景山区 select * from table where ci like "%北京中关村股份有限公司%" 其结果查询的不是“北京中关村”,而是空 而我想要的结果为“北京中关村”。 [/quote] 你写错了,如下: select * from table where '北京中关村股份有限公司' like '%'||ci||'%';[/quote] 额。。。 如果n1的长度不确定了!那要怎么去查询![/quote] 跟长度没关系,如果你条件都不能确定,那还查询什么? [/quote] 因为 n1 这个查询条件来源于其他表的字段! 而其他表的字段中存储的内容不确定,所以n1的值也是没法确定的![/quote] 好吧,来至其他表你把固定的字符换成其他表的字段就行了,如来自T1表: select * from table,t1 where t1.c1 like '%'||ci||'%';[/quote] 匹配规则可能是用“北京中关村股份有限公司” 去匹配“北京中关村” 也有可能是 , 用“北京中关村”去匹配“北京中关村股份有限公司”
CT_LXL 2014-07-21
  • 打赏
  • 举报
回复
引用 19 楼 yuliqi0429 的回复:
[quote=引用 17 楼 zhangxuefeng361 的回复:] 需求是包含关系吗?
c1 列中的数据长度不确定! n1的值不确定,但是要用n1 去匹配c1 列中相似的列, 例如:用“北京中关村股份有限公司” 去匹配“北京中关村” 也有可能是 , 用“北京中关村”去匹配“北京中关村股份有限公司”[/quote] select * from table,t1 where t1.c1 like '%'||ci||'%' or ci like '%'||t1.c1||'%';
玉立琦 2014-07-21
  • 打赏
  • 举报
回复
引用 17 楼 zhangxuefeng361 的回复:
需求是包含关系吗?
c1 列中的数据长度不确定! n1的值不确定,但是要用n1 去匹配c1 列中相似的列, 例如:用“北京中关村股份有限公司” 去匹配“北京中关村” 也有可能是 , 用“北京中关村”去匹配“北京中关村股份有限公司”
jiccccc47 2014-07-21
  • 打赏
  • 举报
回复
27楼 正解。。。。就不多啰嗦了
CT_LXL 2014-07-21
  • 打赏
  • 举报
回复
引用 16 楼 yuliqi0429 的回复:
[quote=引用 15 楼 zlloct 的回复:] [quote=引用 14 楼 yuliqi0429 的回复:] [quote=引用 12 楼 zlloct 的回复:] [quote=引用 10 楼 yuliqi0429 的回复:] [quote=引用 9 楼 zlloct 的回复:] [quote=引用 8 楼 yuliqi0429 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件[/quote] 我知道啊,这又有什么关系呢,达不到你的要求?[/quote] id ci 1 北京中关村 2 北京朝阳区 3 北京海淀区 4 北京丰台区 5 北京鸟巢 6 北京石景山区 select * from table where ci like "%北京中关村股份有限公司%" 其结果查询的不是“北京中关村”,而是空 而我想要的结果为“北京中关村”。 [/quote] 你写错了,如下: select * from table where '北京中关村股份有限公司' like '%'||ci||'%';[/quote] 额。。。 如果n1的长度不确定了!那要怎么去查询![/quote] 跟长度没关系,如果你条件都不能确定,那还查询什么? [/quote] 因为 n1 这个查询条件来源于其他表的字段! 而其他表的字段中存储的内容不确定,所以n1的值也是没法确定的![/quote] 好吧,来至其他表你把固定的字符换成其他表的字段就行了,如来自T1表: select * from table,t1 where t1.c1 like '%'||ci||'%';
zhangxuefeng361 2014-07-21
  • 打赏
  • 举报
回复
需求是包含关系吗?
玉立琦 2014-07-21
  • 打赏
  • 举报
回复
引用 15 楼 zlloct 的回复:
[quote=引用 14 楼 yuliqi0429 的回复:] [quote=引用 12 楼 zlloct 的回复:] [quote=引用 10 楼 yuliqi0429 的回复:] [quote=引用 9 楼 zlloct 的回复:] [quote=引用 8 楼 yuliqi0429 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件[/quote] 我知道啊,这又有什么关系呢,达不到你的要求?[/quote] id ci 1 北京中关村 2 北京朝阳区 3 北京海淀区 4 北京丰台区 5 北京鸟巢 6 北京石景山区 select * from table where ci like "%北京中关村股份有限公司%" 其结果查询的不是“北京中关村”,而是空 而我想要的结果为“北京中关村”。 [/quote] 你写错了,如下: select * from table where '北京中关村股份有限公司' like '%'||ci||'%';[/quote] 额。。。 如果n1的长度不确定了!那要怎么去查询![/quote] 跟长度没关系,如果你条件都不能确定,那还查询什么? [/quote] 因为 n1 这个查询条件来源于其他表的字段! 而其他表的字段中存储的内容不确定,所以n1的值也是没法确定的!
CT_LXL 2014-07-21
  • 打赏
  • 举报
回复
引用 14 楼 yuliqi0429 的回复:
[quote=引用 12 楼 zlloct 的回复:] [quote=引用 10 楼 yuliqi0429 的回复:] [quote=引用 9 楼 zlloct 的回复:] [quote=引用 8 楼 yuliqi0429 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件[/quote] 我知道啊,这又有什么关系呢,达不到你的要求?[/quote] id ci 1 北京中关村 2 北京朝阳区 3 北京海淀区 4 北京丰台区 5 北京鸟巢 6 北京石景山区 select * from table where ci like "%北京中关村股份有限公司%" 其结果查询的不是“北京中关村”,而是空 而我想要的结果为“北京中关村”。 [/quote] 你写错了,如下: select * from table where '北京中关村股份有限公司' like '%'||ci||'%';[/quote] 额。。。 如果n1的长度不确定了!那要怎么去查询![/quote] 跟长度没关系,如果你条件都不能确定,那还查询什么?
玉立琦 2014-07-21
  • 打赏
  • 举报
回复
引用 12 楼 zlloct 的回复:
[quote=引用 10 楼 yuliqi0429 的回复:] [quote=引用 9 楼 zlloct 的回复:] [quote=引用 8 楼 yuliqi0429 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件[/quote] 我知道啊,这又有什么关系呢,达不到你的要求?[/quote] id ci 1 北京中关村 2 北京朝阳区 3 北京海淀区 4 北京丰台区 5 北京鸟巢 6 北京石景山区 select * from table where ci like "%北京中关村股份有限公司%" 其结果查询的不是“北京中关村”,而是空 而我想要的结果为“北京中关村”。 [/quote] 你写错了,如下: select * from table where '北京中关村股份有限公司' like '%'||ci||'%';[/quote] 额。。。 如果n1的长度不确定了!那要怎么去查询!
玉立琦 2014-07-21
  • 打赏
  • 举报
回复
引用 11 楼 shiyiwan 的回复:
SELECT * FROM tab WHERE "北京中关村股份有限公司" LIKE '%'||c1||'%'; 你写反了。
额。。。 如果n1的长度不确定了!那要怎么去查询!
CT_LXL 2014-07-21
  • 打赏
  • 举报
回复
引用 10 楼 yuliqi0429 的回复:
[quote=引用 9 楼 zlloct 的回复:] [quote=引用 8 楼 yuliqi0429 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件[/quote] 我知道啊,这又有什么关系呢,达不到你的要求?[/quote] id ci 1 北京中关村 2 北京朝阳区 3 北京海淀区 4 北京丰台区 5 北京鸟巢 6 北京石景山区 select * from table where ci like "%北京中关村股份有限公司%" 其结果查询的不是“北京中关村”,而是空 而我想要的结果为“北京中关村”。 [/quote] 你写错了,如下: select * from table where '北京中关村股份有限公司' like '%'||ci||'%';
shiyiwan 2014-07-21
  • 打赏
  • 举报
回复
SELECT * FROM tab WHERE "北京中关村股份有限公司" LIKE '%'||c1||'%'; 你写反了。
玉立琦 2014-07-21
  • 打赏
  • 举报
回复
引用 9 楼 zlloct 的回复:
[quote=引用 8 楼 yuliqi0429 的回复:]
[quote=引用 4 楼 zlloct 的回复:]
[quote=引用 2 楼 yuliqi0429 的回复:]
例如
n1 = “北京中关村股份有限公司”

想匹配c1中的“北京中关村”


SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%';
[/quote]





大神啊!你把c1 和 n1 整反了!
其中c1 为一个列名
n1 为一个查询条件[/quote]
我知道啊,这又有什么关系呢,达不到你的要求?[/quote]

id ci
1 北京中关村
2 北京朝阳区
3 北京海淀区
4 北京丰台区
5 北京鸟巢
6 北京石景山区



select * from table where ci like "%北京中关村股份有限公司%"


其结果查询的不是“北京中关村”,而是空
而我想要的结果为“北京中关村”。


CT_LXL 2014-07-21
  • 打赏
  • 举报
回复
引用 8 楼 yuliqi0429 的回复:
[quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件[/quote] 我知道啊,这又有什么关系呢,达不到你的要求?
玉立琦 2014-07-21
  • 打赏
  • 举报
回复
引用 4 楼 zlloct 的回复:
[quote=引用 2 楼 yuliqi0429 的回复:] 例如 n1 = “北京中关村股份有限公司” 想匹配c1中的“北京中关村”
SELECT * FROM tab WHERE n1 LIKE '%'||c1||'%'; [/quote] 大神啊!你把c1 和 n1 整反了! 其中c1 为一个列名 n1 为一个查询条件
加载更多回复(9)

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧