如何仅选择SQL Select语句中特定符号之前出现的字符

som*_*ool 7 sql sql-server-2005

我在这样的数据库中有字符串:

firstname.lastname@email.com/IMCLientName
Run Code Online (Sandbox Code Playgroud)

我只需要在@符号之前出现的字符.

我试图找到一种在SQL中执行此操作的简单方法.

Ian*_*son 23

DECLARE @email VARCHAR(100)
SET @email = 'firstname.lastname@email.com/IMCLientName'

SELECT SUBSTRING(@email,0, CHARINDEX('@',@email))
Run Code Online (Sandbox Code Playgroud)

  • @SpikeX将选择一个空字符串. (2认同)

Izu*_*ien 6

基于Ian Nelson的示例,我们可以添加快速检查,以便在找不到索引时返回初始值。

DECLARE @email VARCHAR(100)
SET @email = 'firstname.lastname.email.com/IMCLientName'

SELECT  CASE WHEN CHARINDEX('@',@email) > 0
            THEN SUBSTRING(@email,0, CHARINDEX('@',@email))
            ELSE @email
        END AS email
Run Code Online (Sandbox Code Playgroud)

这将返回“firstname.lastname.email.com/IMCLientName”。如果您使用“firstname.lastname@email.com/IMCLientName”,那么您将收到“firstname.lastname”结果。