【发布时间】:2018-11-02 16:59:39
【问题描述】:
我必须提取子字符串,但前提是满足条件。 此栏的用户必须填写客户的电话号码(这是一个varchar栏),
这些存储值的一些示例是:
- 23==880-3112==9435
- 52==031 31466==171
- 321==15850
“=”是我不想分享的数字。
我需要提取手机号码(长度为 10 的那个),但是如您所见,这些号码没有存储在相同的位置,我不能使用 LEFT() 或 RIGHT() 函数因此,有些用“-”隔开,有些则在门牌号和手机号之间用空格隔开。
如果这不能用 SQL 完成,我正在使用 Java,但我什至不知道从哪里开始。
提前致谢。
编辑: 我正在使用 SQL SERVER 2012 示例的预期结果是
- 3112==9435
- 31466==171
- 312==15850
我想始终获取 10 个字符的数字。
对不起,谢谢
【问题讨论】:
-
你在用什么rdbms?
-
您能解释一下
=的含义吗?如果=只是掩盖了我们的数字,您可以使用任意数字。 -
那里应该发生什么?一些 DBMS 可以使用正则表达式,重要的是要知道您使用的是 MySQL 还是 PostgreSQL 或 SQLite 或 SQL Server 等。您的要求可以改写为“从字符串中提取最后 10 个数字”吗?还是您的意思是“第一次出现 10 个连续数字”?正则表达式可以做其中任何一个,但您没有告诉我们您使用的是哪个 DBMS,所以我们不知道您是否可以访问正则表达式。
-
您对 1,2 和 3 的预期结果究竟是什么?
标签: java sql substring conditional-statements