Gavin_Stargazer 2021-11-08 10:42 采纳率: 62.5%
浏览 175
已结题

【sql】两表之间,两个字段的模糊查询及替换

一、数据说明
table_1。包含【区县-城市-省份】三个字段,区县(COUN)是此次需要处理的字段。给出6个示例值;
table_2。仅ethnic一个字段,所有民族名称。给出7个示例值。

数据库为SQLite,数据库之间的SQL语法差异可暂不考虑。至少这个小需求,应该不会出现大差异。


二、处理目标
table_1.COUN,针对这一字段的值
1、如果值由【地名+民族名称】组成,则去除民族名称,只保留地名;
2、如果值只含地名,则保持不变。

换另一种说法:
如果table_1.coun中的值,包含table_2.ethnic的值(%ethnic%),则去除table_2.ethnic的值

img


三、现行方案
可实现上述第1个处理目标。
但第2个处理目标不能实现——换种说法是以下SQL语句会导致【执行后,COUN字段中应当不变的值,被置为NULL】

UPDATE
    TABLE_1 AS A
SET
    COUN = (
        SELECT
            SUBSTR(
                A.COUN,
                1,
                INSTR(A.COUN, B.ETHNIC) -1
            )
        FROM
            TABLE_2 AS B
        WHERE
            A.COUN LIKE '%' || B.ETHNIC || '%'
    );

四、请指教
如何同时实现上述两个处理目标?理解是需要增加一个WHERE语句,但尝试几次都未能成功。
请帮指出思路或写出SQL语句,谢谢


五、附录
提供案例数据

table_a = {
    "COUN": {0: "本溪满族", 1: "麻阳苗族", 2: "江华瑶族", 3: "竹溪", 4: "白河", 5: "襄垣"},
    "CITY": {0: "本溪", 1: "怀化", 2: "永州", 3: "十堰", 4: "安康", 5: "长治"},
    "PROV": {0: "辽宁省", 1: "湖南省", 2: "湖南省", 3: "湖北省", 4: "陕西省", 5: "山西省"},
}

table_b = {
    "ETHNIC": {0: "满族", 1: "苗族", 2: "瑶族", 3: "汉族", 4: "白族", 5: "高山族", 6: "其他民族"}
}
  • 写回答

5条回答 默认 最新

  • qq_1306620048 2021-11-08 10:57
    关注

    img


    这里的数据是一张表吗?

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月9日
  • 修改了问题 11月8日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?