Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在@SQL之前替换电子邮件地址中的字母_Sql_Sql Server_Tsql - Fatal编程技术网

在@SQL之前替换电子邮件地址中的字母

在@SQL之前替换电子邮件地址中的字母,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试更新电子邮件地址字段。我的场景是,我有一列包含电子邮件地址,我希望替换操作“@”之前的字符串。在“@”之前,如果字符是“a”,我希望将其替换为“b” 为了davidsmith@yahoo.com结果将是dbvidsmith@yahoo.com 谢谢您可以使用charindex(): 返回: dbvidsmith@yahoo.com你试过什么了吗。是SQL server还是Mysql?这是Mysql还是SQL server?他们是不同的。一旦你让我们知道了,我打赌我们可以在某个地方找到一

我正在尝试更新电子邮件地址字段。我的场景是,我有一列包含电子邮件地址,我希望替换操作“@”之前的字符串。在“@”之前,如果字符是“a”,我希望将其替换为“b”

为了davidsmith@yahoo.com结果将是dbvidsmith@yahoo.com


谢谢

您可以使用
charindex()

返回:
dbvidsmith@yahoo.com

你试过什么了吗。是SQL server还是Mysql?这是Mysql还是SQL server?他们是不同的。一旦你让我们知道了,我打赌我们可以在某个地方找到一个类似的问题,这样就已经得到了答案。标记你真正使用的唯一一个DBMS(
MySQL
SQL Server
)。这是T-SQL。我试过选择替换(左)davidsmith@yahoo.com,charIndex('@','davidsmith@yahoo.com","a","b"。但没有得到预期的结果。此解决方案适用于一个电子邮件地址。非常感谢。但是,如果我尝试用列名替换它并处理整个表,则会抛出一个错误“传递给LEFT或SUBSTRING函数的长度参数无效”。我如何让它在专栏中发挥作用?@Dibya。其中一封电子邮件似乎没有字符
@
。所以,您需要
where
子句。
select replace(substring(email, 1, charindex('@', email)-1), 'a', 'b') + 
       substring(email, charindex('@', email), len(email))
from table t
where email like '%@%' -- or
      charindex('@', email) > 0;
DECLARE @email VARCHAR(1000) = 'davidsmith@yahoo.com'

SELECT 
  REPLACE(SUBSTRING(@email,0,e.t),'a','b')+
  SUBSTRING(@email,e.t,8000)
FROM (VALUES (CHARINDEX('@',@email))) e(t);