创建SQL查询


Create SQL query

我有一个带有单个字段EmailId的表注册。用户输入的电子邮件id如下sourab@winworldsoft.com在注册时。我想得到介于@和之间的值。(dot)并存储到数据库表公司中。

我尝试了一些基本的查询通配符查询。像运营商

表的SQl查询。

Create table registration(email varchar(20));
insert into registration values("sourabh@winworldsoft.com");

有人能帮我吗?我将不胜感激。

感谢

<?php
$emailadd="billy@somedomain.com";
$email_company = substr(strrchr($emailadd, "@"), 1);
echo $email_company;
?>

使用php,

你可以得到介于@和点之间的值,

$email = "sourab@winworldsoft.com"
$value1 = explode('@',$email);
$value2 = explode('.',$value1[1]);
echo $value2;

您可以创建一个AFTER INSERT TRIGGERON注册表,以自动插入公司表,如下所示:

DELIMITER $$
DROP TRIGGER /*!50032 IF EXISTS */ `AIR_registration`$$
CREATE
    /*!50017 DEFINER = 'root'@'%' */
    TRIGGER `AIR_registration` AFTER INSERT ON `registration` 
    FOR EACH ROW BEGIN
END;
    INSERT INTO Company (companyName) 
    VALUES (SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.email, '@', -1), '.', 1));
$$
DELIMITER ;

我认为获得"公司"的更好方法是使用regexp。

<?php
  $re = '/.+@([^.]+).+/';
  $email = 'sourab@winworldsoft.com';
  preg_match($re, $email, $matches);
  echo $matches[1];
?>

如果电子邮件的域部分有多个点,并且您想要除最后一部分之外的所有点,您也可以使用:

<?php
  $re = '/.+@(.+)'..+/';
  $email = 'sourab@email.winworldsoft.com';
  preg_match($re, $email, $matches);
  echo $matches[1];
?>

你会得到@和dot(.)之间的结果,就像这个

<?php
$email = "test@test.com";
$value1 = explode('@',$email);
$value2 = explode('.',$value1[1]);
echo $value2[0];
?>

或者以动态方式使用RE,你会得到这样的结果:

<?php
$re = '/.+@([^.]+).+/';
  $email = 'test@test.com';
  preg_match($re, $email, $match);
  echo $match[1];
?>

尝试。。。

SELECT SUBSTRING('sourabh@winworldsoft.com', (CHARINDEX('@', 'sourabh@winworldsoft.com')+1), (len('sourabh@winworldsoft.com')+1-(CHARINDEX('.',reverse('sourabh@winworldsoft.com'))))-(CHARINDEX('@', 'sourabh@winworldsoft.com')+1));