从表中选择字符串的特定部分

时间:2013-12-30 10:13:55

标签: mysql

我有一张桌子。在那里我存储用户详细信息,如firstname,lastname,phonenumber。存储电话号码时,它会存储没有扩展名的数据,如 +1(013)691-1535x_ _ _ 。有时用户可能会输入扩展名,它将存储为 +1(013)691-1535x12345 。我怀疑的是如果扩展名为空,如何仅检索电话号码。如果可以使用扩展程序,我需要查看带扩展名的电话号码。

2 个答案:

答案 0 :(得分:2)

您可以使用SUBSTRING_INDEX分割电话号码:

SELECT phone_number,SUBSTRING_INDEX(phone_number, 'x', 1) as phone_num, SUBSTRING_INDEX(phone_number, 'x', -1) as phone_ext FROM tablename;

查询结果

+-----------------------+-----------------+-----------+
| phone_number          | phone_num       | phone_ext |
+-----------------------+-----------------+-----------+
| +1(013)691-1535x12345 | +1(013)691-1535 | 12345     |
+-----------------------+-----------------+-----------+

现在,您的整个电话号码都有分机号码,电话号码没有分机号,只有分机号码。根据查询结果,您可以在脚本中进行“检查”并使用字段值。

答案 1 :(得分:1)

如果您知道单词的顺序,请尝试或者好吧......您可以使用REGEXP

  SELECT `phone_number` FROM `table` WHERE `phone_number` LIKE '+1(013)691-1535x%'