Sql 正则表达式查询
我必须读取一个字符串列,并根据该字符串在数字列中加载一个值: 'S12345'-12345(删除第一个字母并加载剩余的数字) “12345”-12345(直接加载号码) “12345T”-NULL(如果最后一个字符是字母,则加载NULL) “1A2B3C45”或“SQ12345”-NULL(如果字符串中有超过1个字母,则加载NULL)Sql 正则表达式查询,sql,regex,oracle11g,Sql,Regex,Oracle11g,我必须读取一个字符串列,并根据该字符串在数字列中加载一个值: 'S12345'-12345(删除第一个字母并加载剩余的数字) “12345”-12345(直接加载号码) “12345T”-NULL(如果最后一个字符是字母,则加载NULL) “1A2B3C45”或“SQ12345”-NULL(如果字符串中有超过1个字母,则加载NULL) 我试图设计一个使用CASE和REGEXP_的查询,但运气不好。有人能帮我查询一下具体要求吗。提前谢谢 我想你在找这个: ^[A-Za-z]?(\d+)$ 是一些
我试图设计一个使用CASE和REGEXP_的查询,但运气不好。有人能帮我查询一下具体要求吗。提前谢谢 我想你在找这个:
^[A-Za-z]?(\d+)$
是一些测试数据的示例,您可以添加自己的数据行来测试它。请显示您尝试了什么。我们不是来为您完成工作的,但我们会帮助您修复不工作的代码。
1A2
会返回什么(即字符串中只有一个字母的数字,但不在开头)?注意:[a-z]!=[A-Za-z]
很奇怪,但是如果您的regexp解释器支持\d,它也支持\w而不是[A-Za-z],那么为什么不^[\w](\d+)$
?因为\w
也包含0-9
。对于整数字符串,如12345
,它只捕获capturegroup中的2345
,因为第一个字符是可选的,但与\w
匹配,但与[A-Za-z]
不匹配。