MS Access - 条件连接

时间:2017-07-12 20:54:38

标签: sql regex ms-access

我获得了一个Access数据库,其中包含一列ID如下所示:

374452-52
362619
483726
384810
384612-18

我想将'-00'连接到没有-dd的值的末尾。换句话说,我可以在MS Access中使用正则表达式吗?

3 个答案:

答案 0 :(得分:0)

你不需要正则表达式。使用LIKE

select id & '-00'
from mytable
where id not like '%-%';

或者,选择所有行:

select iif(id like '%-%', id, id & '-00')
from mytable;

如果您愿意,也可以使用INSTR代替LIKE

答案 1 :(得分:0)

您将使用更新:

update t
    set id = id & "-00"
    where id not like "*-[0-9][0-9]"

您可以使用以下方法测试逻辑:

select iif(id not like "*-[0-9][0-9]", id & "-00", id) as new_id,
       t.*
from t

答案 2 :(得分:0)

所以你只想连接' -00'只有当id没有结束时:一个破折号,一个数字和一个数字。正则表达式为/-[0-9][0-9]//-\d\d/

在这里,我创建了表,然后从中进行选择:

CREATE TABLE input (
  id VARCHAR(10)
);
INSERT INTO input SELECT * FROM (
          SELECT '374452-52' FROM dual
UNION ALL SELECT '362619'    FROM dual
UNION ALL SELECT '483726'    FROM dual
UNION ALL SELECT '384810'    FROM dual
UNION ALL SELECT '384612-18' FROM dual
) input;

SELECT
  IIF(
        LEFT(RIGHT(id,3),1)='-'
    AND LEFT(RIGHT(id,2),1) BETWEEN '0' AND '9'
    AND RIGHT(id,1)         BETWEEN '0' AND '9'
  , id
  , id & '-00'
  ) AS fixed_id
FROM input;

fixed_id
374452-52
362619-00
483726-00
384810-00
384612-18
374452-52
362619-00
483726-00
384810-00
384612-18