【问题标题】:Problem matching data in tables using regex使用正则表达式匹配表中的数据问题
【发布时间】:2026-02-14 19:30:01
【问题描述】:

在这里,我想在 categoryID (image2) 中的字符与 categorID (image1) 匹配的地方更新 image2 的 categoryName。但是,我希望 categoryID "AA BB"(image2) 的类别名称应更新为 Archeology、Business。但是,我在这里粘贴的查询没有得到想要的结果。

UPDATE image2 INNER JOIN [image1] ON image2.CategoryID = image1.CategoryID SET image2.CategoryName = image1.CategoryName
WHERE ((([image1].CategoryID) Like "*[A-Z\s]*"));

【问题讨论】:

  • 尝试使用REGEXP_LIKE(column, regex),而不是LIKE,例如REGEXP_LIKE([image1].CategoryID, '*[A-Z\s]*)
  • @Nikola 这给了我“未定义函数”错误。此外,尝试使用 RegexMatch。但是,得到同样的错误。我正在研究 ms-access。

标签: mysql sql-server ms-access ms-access-2013 ms-access-2016


【解决方案1】:

试试这个:

DECLARE @Image1 TABLE (CategoryID varchar(2), CategoryName varchar(50))
INSERT INTO @Image1
    VALUES
            ('AA', 'Archeology')
        ,   ('BB', 'Business')
        ,   ('DD', 'Doctor')
        ,   ('EE', 'English')
        ,   ('FF', 'Finance')
;

DECLARE @Image2 TABLE (Name varchar(50), CategoryID varchar(20), CategoryName varchar(50))
INSERT INTO @Image2
    VALUES
            ('Aman' , 'AA'      ,   '')
        ,   ('Mani' , 'BB'      ,   '')
        ,   ('Sita' , 'AA BB'   ,   '')
        ,   ('Gita' , 'DD'      ,   '')
        ,   ('Ram'  , 'FF'      ,   '')
        ,   ('Ashi' , 'EE'      ,   '')
        ,   ('Anvi' , 'DD FF EE',   '')     
;

UPDATE I2   SET
    CategoryName = STUFF((SELECT ', ' + CategoryName    FROM @Image1 I1 WHERE CHARINDEX(I1.CategoryID, I2.CategoryID)>0 FOR XML PATH('')), 1, 1, '')
    FROM    @Image2 I2
;

SELECT * FROM @Image2;

【讨论】: