请教:模糊查询 比对

xxzqbxxzqb 2017-02-22 02:57:12
数据库为sql server,
前台输入为一个edit控件,edit的数据要插入数据表A中的 kh_name字段。
在插入前要先判断是否有重复的、或类似的,并给予提醒。

如果 表A中kh_name已存在 ‘日本大金’ ,那么现在再 录入 ‘大金’, 就要弹出异常提示;
如果 表A中kh_name已存在 ‘万科集团’ ,那么现在再 录入 ‘万科’,或‘万科集团股份有限公司’, 就要弹出异常提示;

请教,该语句如何写。

谢谢

...全文
182 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxzqbxxzqb 2017-02-23
  • 打赏
  • 举报
回复
好,谢谢两位
Tiger_Zhao 2017-02-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xxzqbxxzqb 的回复:]其实,我想要的 是一个智能比对[/Quote]
我记得在问答区回复过一样的问题,是你吗?(万恶的CSDN一直做不好搜索功能)

再次重复:必须要考人工参与
无论全名是:万科集团、万科股份有限公司、万科娱乐、万科家政……
必须人工提取出关键字“万科”填入专门的字段,然后用关键字进行匹配查找。

否则只按连续相同字符个数匹配,输入“万科股份有限公司”,那么“千寻股份有限公司”、“百度股份有限公司”的匹配数比“万科集团”还高。
二月十六 2017-02-22
  • 打赏
  • 举报
回复
引用 11 楼 xxzqbxxzqb 的回复:
呵呵,不是这个意思。 其实,我想要的 是一个智能比对 可以简单化,就是任意两个相连的字 作为 like 的值 。 万科集团 --- 万科 ---- 万科股份有限公司 ,因为这三个值中都有万科,所以怀疑有重复,所以要 弹窗 提醒。 万科 -- 万达 --- 万千百货 -- 万向集团 ,尽管都有万,但是 绝对不是一个意思,所以 没必要弹出 警示 窗口
如果这样那这个异常提示就很容易出现,比如输入‘有限’、‘公司’、‘科技’等等这种很常见的词语,就被提示异常了。 而且这种功能做起来估计性能不会很高,可以再想想换个别的想法。
xxzqbxxzqb 2017-02-22
  • 打赏
  • 举报
回复
呵呵,不是这个意思。 其实,我想要的 是一个智能比对 可以简单化,就是任意两个相连的字 作为 like 的值 。 万科集团 --- 万科 ---- 万科股份有限公司 ,因为这三个值中都有万科,所以怀疑有重复,所以要 弹窗 提醒。 万科 -- 万达 --- 万千百货 -- 万向集团 ,尽管都有万,但是 绝对不是一个意思,所以 没必要弹出 警示 窗口
Tiger_Zhao 2017-02-22
  • 打赏
  • 举报
回复
/* 测试数据
WITH a(kn_name) AS (
SELECT '万科集团'
)
*/
SELECT kn_name
FROM a
WHERE kn_name LIKE '%万科%'
OR '万科' LIKE '%'+kn_name+'%'

kn_name
--------
万科集团


/* 测试数据
WITH a(kn_name) AS (
SELECT '万科集团'
)
*/
SELECT kn_name
FROM a
WHERE kn_name LIKE '%万科集团股份有限公司%'
OR '万科集团股份有限公司' LIKE '%'+kn_name+'%'

kn_name
--------
万科集团
xxzqbxxzqb 2017-02-22
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
用你的前台程序动态拼出下面的SQL进行查询
SELECT kn_name
  FROM a
 WHERE kn_name LIKE '%大金%'
    OR '大金' LIKE '%'+kn_name+'%'
你的语句不能实现
Tiger_Zhao 2017-02-22
  • 打赏
  • 举报
回复
这和你的程序开发语言相关。拼字符串是基本语句啊。
xxzqbxxzqb 2017-02-22
  • 打赏
  • 举报
回复
引用 5 楼 Tiger_Zhao 的回复:
[Quote=引用 3 楼 xxzqbxxzqb 的回复:]兄弟,大金 只是我举个例子 [/Quote] 我说得不够明白吗? [Quote=引用 2 楼 Tiger_Zhao 的回复:]用你的前台程序动态拼出下面的SQL进行查询[/Quote]
兄弟,能具体下告诉我,如何动态拼出吗?
xxzqbxxzqb 2017-02-22
  • 打赏
  • 举报
回复



其实,我想要的 是一个智能比对

可以简单化,就是任意两个相连的字 作为 like 的值 。

万科集团 --- 万科 ---- 万科股份有限公司 ,因为这三个值中都有万科,所以怀疑有重复,所以要 提醒。
Tiger_Zhao 2017-02-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xxzqbxxzqb 的回复:]兄弟,大金 只是我举个例子 [/Quote]
我说得不够明白吗?
[Quote=引用 2 楼 Tiger_Zhao 的回复:]用你的前台程序动态拼出下面的SQL进行查询[/Quote]
二月十六 2017-02-22
  • 打赏
  • 举报
回复
有返回值则代表有类似的公司了
DECLARE @test NVARCHAR(100) = '万科集团股份有限公司' --插入的测试数据
--测试数据
;WITH tab1(kh_name)AS(
select '万科集团'  union all 
select '日本大金'
)
--测试数据结束
SELECT  *
FROM    tab1
WHERE   kh_name LIKE '%' + @test + '%'
        OR @test LIKE '%' + kh_name + '%'
xxzqbxxzqb 2017-02-22
  • 打赏
  • 举报
回复
兄弟,大金 只是我举个例子
Tiger_Zhao 2017-02-22
  • 打赏
  • 举报
回复
用你的前台程序动态拼出下面的SQL进行查询
SELECT kn_name
FROM a
WHERE kn_name LIKE '%大金%'
OR '大金' LIKE '%'+kn_name+'%'
xxzqbxxzqb 2017-02-22
  • 打赏
  • 举报
回复
上面的举例 都是 重复的录入, 也有 非重复的 例子,如 ‘万达地产’ 和 ‘万达传媒’ 如果 表A中kh_name已存在 ‘万达地产’ ,那么现在再 录入 ‘万达传媒’, 尽管实际不是重复的值,也要弹出异常提示。(能否 牛X到不弹出提示????这么智能????)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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