![](/img/trans.png)
[英]REGEX_REPLACE not matching all chars from the beginning to the first occurrence of a 5 digits word
[英]mySQL regex_replace remove all beginning numbers from mixed input
我需要一个正则表达式模式来删除字段开头的所有数字输入,该字段在第一个字母字符处停止,并留下字母字符后面的任何剩余数字。
这是最简单的测试用例。
CREATE TABLE tempdemo (tdfields varchar(10));
INSERT INTO tempdemo (tdfields) VALUES ('1'), ('11'), ('111'), ('a'), ('ab'), ('abc'), ('1a'), ('a1');
SELECT REGEXP_REPLACE(tdfields, '^[0-9]*$', '') FROM tempdemo;
从代码中,我想要以下 output: :blank:, :blank:, :blank:, a, ab, abc, a, a1
现在,正则表达式模式留下 '1a' 而不是 'a',这是不可取的。
任何帮助将不胜感激。 谢谢。
您可以使用
CREATE TABLE tempdemo (tdfields varchar(10));
INSERT INTO tempdemo (tdfields) VALUES ('1'), ('11'), ('111'), ('a'), ('ab'), ('abc'), ('1a'), ('a1');
SELECT REGEXP_REPLACE(tdfields, '^[0-9]+', '') FROM tempdemo;
它将从字符串的开头删除一个或多个数字。
更多详情:
^
- 字符串的开头[0-9]+
- 一位或多位数字。 $
匹配字符串 position 的开头。
请注意,这里的^[0-9]*
不是一个好的模式,因为它匹配任何字符串,并且+
变体仅在必要时匹配,当字符串开头有数字时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.