如何删除特定字符编号后的字符

时间:2016-11-04 09:20:35

标签: sql ms-access character

我有一个包含不确定出生日期信息的列,以下列方式显示(其中0表示数字0-9):

  • 0000 <?/ LI>
  • 0000 ??
  • 0000 !!
  • 0000?
  • et sim。

我想删除前四位数后面的所有字符。我尝试使用UPDATE [test] SET BYEAR = left(BYEAR,LEN(FAAR)-4);的变体,尝试用右键交换它,选择不同的数字删除,但没有找到一种方法明确告诉它保留前四个数字并删除其余数字

非常感谢所有帮助。

已发布PerlPython的类似问题,但我在Access / SQL中找不到解决方法。我正在处理一个本地存储的数据库,它在链接时将在Oracle服务器上运行。

2 个答案:

答案 0 :(得分:3)

在MS Access中,您可以通过执行以下操作来保留前四个字符:

UPDATE [test]
    SET BYEAR = left(BYEAR, 4);

这不会检查前四个字符实际上是数字,但它确实可以为您提供的数据执行所需的操作。

答案 1 :(得分:0)

在Oracle中,您可以尝试以下操作:

WITH TEST(T) AS
(
    SELECT 'xx0000?' FROM DUAL UNION ALL
    SELECT '0000???' FROM DUAL UNION ALL
    SELECT '0000  ?' FROM DUAL UNION ALL
    SELECT 'xx00009' FROM DUAL UNION ALL
    SELECT '000099?' FROM DUAL
)
SELECT REGEXP_SUBSTR(T, '[0-9]{4}')
FROM TEST

REGEXP_SUBSTR(T,'[0-9]{4}')
----------------------------
0000
0000
0000
0000
0000

在你的情况下:

update yourTable set yourField = REGEXP_SUBSTR(yourField , '[0-9]{4}')