【问题标题】:select a specific word from a field in SQL [closed]从 SQL 中的字段中选择特定单词 [关闭]
【发布时间】:2014-08-16 09:20:46
【问题描述】:

我创建了下表。

create table MYTABLE (address text);

我在表中插入了以下行。

INSERT INTO MYTABLE VALUES('Smartlink House, Plot # 5, 
Kurla-Bandra Complex Road,
Tel : +xxxxxxxx
Email : helpdesk@digisol.com');

现在,我想从上面的行中获取电子邮件和电话号码:。 请不要告诉在单独的列中插入电子邮件和电话号码,因为我已经以上述方式创建了数据库。

【问题讨论】:

  • 我猜正则表达式是你最好的选择,或者用你使用查询的任何语言进行提取。正确的答案当然是改变你的数据库设计,因为它目前是错误的
  • 为什么不为电子邮件和电话创建单独的列?
  • 也许你的问题应该是如何在不丢失数据的情况下更改我的数据库。
  • 所以你问一堆程序员告诉你如何做一些你知道是错误的并且应该改变的事情?我认为您不会在这里得到满足您的答案,我想人们会告诉您正确执行此操作,或者计算出与您自己匹配的字符串
  • 唯一的解决方案:解雇设计该表格的人,并聘请一位秘书将数据输入精心设计的表格中。

标签: mysql sql select


【解决方案1】:

创建另一个名为 my_table1 的表,其列数为“n”,但创建两个数据类型与 tel_no 和来自 my_table 的电子邮件相同的列。然后按照示例代码,

insert into my_table1 (tel_no1, email1) as select (tel_no,email) from my_table

【讨论】:

  • 回答前请阅读问题
【解决方案2】:

您必须安装lib_mysqludf_preg MySQL UDF

SET @telRegEx= "/(?<=Tel : ).*/i";
SET @emailRegEx= "/(?<=Email : ).*/i";

SELECT 
    PREG_CAPTURE(@telRegEx, address_text) as tel,
    PREG_CAPTURE(@emailRegEx, address_text) as email
FROM 
    MYTABLE

ps:你必须想办法改变你的表结构,这是一种在数据库中保存数据的非常丑陋的方法。

【讨论】:

    猜你喜欢
    • 2011-09-22
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多