RICHEER COCA 2022-04-20 23:24 采纳率: 93.9%
浏览 42
已结题

请问模糊查询 如何 能够匹配表T2的单个字符? 2表示是整数2,不是22或23

;WITH t AS (
        SELECT '11 14 19 20 22 25'notext UNION ALL
        SELECT '7 11 13 16 18 39'UNION ALL
        SELECT '14 17 18 22 23 33'UNION ALL
        SELECT '11 13 24 29 32 34'
), t2 AS (
        SELECT '2'seq UNION ALL
        SELECT '4'UNION ALL
        SELECT '7'UNION ALL
        SELECT '19')
 SELECT notext FROM t WHERE EXISTS( SELECT 1 FROM t2 WHERE t.notext LIKE concat( '%', t2.seq, '%' ));

执行结果是

notext
11 14 19 20 22 25
7 11 13 16 18 39
14 17 18 22 23 33
11 13 24 29 32 34

seq是2,并不是14 17 18 22 23 33中的 22 23
seq是4,并不是11 13 24 29 32 34中的 24 34
seq是7,并不是14 17 18 22 23 33中的 17
结果不正确。

如何修改脚本 ? 希望得到的结果是
notext
11 14 19 20 22 25
7 11 13 16 18 39

  • 写回答

1条回答 默认 最新

  • codeSniping 2022-04-21 00:16
    关注
    
    ;WITH t AS (
            SELECT '11 14 19 20 22 25'notext UNION ALL
            SELECT '7 11 13 16 18 39'UNION ALL
            SELECT '14 17 18 22 23 33'UNION ALL
            SELECT '11 13 24 29 32 34'
    ), t2 AS (
            SELECT '2'seq UNION ALL
            SELECT '4'UNION ALL
            SELECT '7'UNION ALL
            SELECT '19')
     SELECT notext FROM t WHERE EXISTS( SELECT 1 FROM t2 WHERE REPLACE(CONCAT(';',t.notext,';'),' ',';') LIKE concat( '%;', t2.seq, ';%' ));
    

    若有帮助,请采纳~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月21日
  • 已采纳回答 4月21日
  • 创建了问题 4月20日