【问题标题】:How to write a condition inside select statement in SQL Server 2008 R2如何在 SQL Server 2008 R2 中的 select 语句中编写条件
【发布时间】:2014-12-24 08:15:43
【问题描述】:

我的场景是我有下表 -

FullName                 ManufacturingCost
------------------------------------------
Harry Singh Malhotra          $200.00
Harry                         $200.00
Danny                         $200.00
Britany Krout                 $100.00

现在我想要上表中的两列 - fullNameFirstName。我正在使用这个查询:

Select 
    fullName, left(fullName, charindex(' ', fullName, 1) - 1) as firstName
from 
    Table1

上述查询的问题是,在第二行和第三行,Firstname 返回为Null,因为charindex 在这些行中找不到' '

我想要的结果是:

    FullName                 FirstName
    -------------------------------------
    Harry Singh Malhotra     Harry
    Harry                    Harry
    Danny                    Danny
    Britany Krout            Britany

谁能帮我告诉我如何在语句中添加条件

select * from Table11

因为我想检查特定列中每个值的条件。

Select case 不起作用,因为它只接受标量值。

【问题讨论】:

  • REAL 解决方案是将这些内容(FirstNameLastName)存储为 单独的列 - 将它们一起添加到 @ 987654333@ 比将全名解析为名字和姓氏要简单得多.....

标签: sql-server-2008-r2


【解决方案1】:

使用Case Statement 处理FullName 而不使用MiddlenameLastName

SELECT fullName,
       First_Name=LEFT(( fullName ), CASE
                                       WHEN Charindex(' ', fullName) = 0 THEN Len(fullName)
                                       ELSE Charindex(' ', fullName)
                                     END)
FROM   Table1 

ParseName 技巧也可以,但您的字符串最多应包含 4 个单词。

SELECT fullName,
       First_Name=Reverse(Parsename(Replace(Reverse(fullName), ' ', '.'), 1))
FROM   table1 

【讨论】:

  • @sam - Gald 它帮助检查了解析名称的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 2010-11-10
  • 2013-06-14
相关资源
最近更新 更多