如何在 SQL Server 2008 R2 中的 select 语句中编写条件
Posted
技术标签:
【中文标题】如何在 SQL Server 2008 R2 中的 select 语句中编写条件【英文标题】:How to write a condition inside select statement in SQL Server 2008 R2 【发布时间】:2014-12-24 08:15:43 【问题描述】:我的场景是我有下表 -
FullName ManufacturingCost
------------------------------------------
Harry Singh Malhotra $200.00
Harry $200.00
Danny $200.00
Britany Krout $100.00
现在我想要上表中的两列 - fullName
和 FirstName
。我正在使用这个查询:
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 解决方案是将这些内容(FirstName
、LastName
)存储为 单独的列 - 将它们一起添加到 @ 987654333@ 比将全名解析为名字和姓氏要简单得多.....
【参考方案1】:
使用Case Statement
处理FullName
而不使用Middlename
或LastName
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 它帮助检查了解析名称的答案以上是关于如何在 SQL Server 2008 R2 中的 select 语句中编写条件的主要内容,如果未能解决你的问题,请参考以下文章
如何删除 SQL Server 2008 R2 数据库中的最后 N 条记录? [复制]
如何使用 JDBC 将表值参数(类数组参数)传递给 Microsoft SQL Server 2008 R2 中的存储过程? [复制]
如何在 SQL Server 2014 中从 SQL Server 2008 R2 恢复备份?
如何在windows server2008 r2上打开internet信息服务 iis 管理器
SQL Server 2008 中的 SQL Server 2008 R2 中的 dm_os_volume_stats 等效项是啥?