我有一个包含不确定出生日期信息的列,以下列方式显示(其中0表示数字0-9):
我想删除前四位数后面的所有字符。我尝试使用UPDATE [test] SET BYEAR = left(BYEAR,LEN(FAAR)-4);
的变体,尝试用右键交换它,选择不同的数字删除,但没有找到一种方法明确告诉它保留前四个数字并删除其余数字
非常感谢所有帮助。
已发布Perl,Python的类似问题,但我在Access / SQL中找不到解决方法。我正在处理一个本地存储的数据库,它在链接时将在Oracle服务器上运行。
答案 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}')