首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

这么的一个SQL需求你们遇到过吗

2012-10-21 
这样的一个SQL需求你们遇到过吗?今天要实现一个功能,查询一个表字段中相近的词,没有指定需要查询的词,比如

这样的一个SQL需求你们遇到过吗?
今天要实现一个功能,查询一个表字段中相近的词,没有指定需要查询的词,比如有一张表中有个字段中有111,222,2,333,1那么就需要查询出111,1,222,2这4列,因为333没有相近的词所以不能查询出来。
like 跟 instr 还有正则都需要匹配具体的条件,而这个不存在指定的条件。想利用sql语句来解决,希望高手给点意见。

建表语句如下:

SQL code
              CREATE TABLE  test_col (col_name VARCHAR2(100));              INSERT INTO TEST_COL (COL_NAME) VALUES ('爱特优科新信息技术(北京)有限公司');INSERT INTO TEST_COL (COL_NAME) VALUES ('爱特优科信息技术(北京)有限公司');INSERT INTO TEST_COL (COL_NAME) VALUES ('安那络器件(中国)有限公司');INSERT INTO TEST_COL (COL_NAME) VALUES ('安那络器件(中国)有限公司');INSERT INTO TEST_COL (COL_NAME) VALUES ('百润时代网络技术(北京)有限公司');INSERT INTO TEST_COL (COL_NAME) VALUES ('百润时代网络技术有限公司');INSERT INTO TEST_COL (COL_NAME) VALUES ('北京艾克赛利科技有限公司');INSERT INTO TEST_COL (COL_NAME) VALUES ('北京艾克赛利微电子技术有限公司');INSERT INTO TEST_COL (COL_NAME) VALUES ('百度集团');INSERT INTO TEST_COL (COL_NAME) VALUES ('新浪集团');我要实现的结果如下:1    爱特优科新信息技术(北京)有限公司2    爱特优科信息技术(北京)有限公司3    安那络器件(中国)有限公司4    安那络器件(中国)有限公司5    百润时代网络技术(北京)有限公司6    百润时代网络技术有限公司7    北京艾克赛利科技有限公司8    北京艾克赛利微电子技术有限公司最好是挨着的,把相近的显示查询出来





[解决办法]
SQL code
SQL> select * from test_col;COL_NAME--------------------------------------------1222331中国日本米国韓国9 rows selectedSELECT n.col_name  FROM (SELECT m.col_name,               m.keyword,               COUNT(*) OVER(PARTITION BY m.rid, m.keyword) cnt1,               COUNT(*) OVER(PARTITION BY m.keyword) cnt2          FROM (SELECT t1.ROWID rid,                       t1.col_name,                       SUBSTR(t1.col_name, t2.rn, 1) keyword                  FROM test_col t1,                       (SELECT ROWNUM rn,                               max_len                          FROM (SELECT MAX(LENGTH(col_name)) max_len                                  FROM test_col)                        CONNECT BY ROWNUM <= max_len) t2                 WHERE LENGTH(t1.col_name) >= rn) m) n WHERE n.cnt1 <> n.cnt2COL_NAME--------------------------------------------1122222中国米国韓国8 rows selected
[解决办法]
这个想法比较有创意,实用性也比较高!
[解决办法]
探讨
今天要实现一个功能,查询一个表字段中相近的词,没有指定需要查询的词,比如有一张表中有个字段中有111,222,2,333,1那么就需要查询出111,1,222,2这4列,因为333没有相近的词所以不能查询出来。
like 跟 instr 还有正则都需要匹配具体的条件,而这个不存在指定的条件。想利用sql语句来解决,希望高手给点意见。

建表语句如下:
SQL code


……

[解决办法]
一眼就看出共同点
有限公司
那这个来 %有限公司
就行了
[解决办法]
估计是名称不规范引起了其他问题?

做映射会不会好点,让客户自己维护。

热点排行