sql-server – 如何在SQL Server中将一列拆分为两列
发布时间:2020-12-12 16:21:59 所属栏目:MsSql教程 来源:网络整理
导读:我对SQL Server有一个小问题,请告诉我如何解决这个问题 表:emp id name --------------- 1 abc_rao 2 nani 3 hari_babu 4 kalibabu 5 ab_tan 根据该表我想要输出如下 id firstname lastname 1 abc rao 2 nani nothing 3 hari babu 4 kalibabu nothing 5 ab t
我对SQL Server有一个小问题,请告诉我如何解决这个问题
表:emp id name --------------- 1 abc_rao 2 nani 3 hari_babu 4 kalibabu 5 ab_tan 根据该表我想要输出如下 id firstname lastname 1 abc rao 2 nani nothing 3 hari babu 4 kalibabu nothing 5 ab tan 我试过这样的: select SUBSTRING(name,1,CHARINDEX('_',name) - 1) as firstname,SUBSTRING(name,name) + 1,LEN(name)) as lastname from emp 但我没有得到完全预期的结果. 相反,我收到一个错误:
请告诉我如何解决这个问题 在SQL Server中使用查询的问题 解决方法尝试这个:select case when CHARINDEX('_',name)>0 then SUBSTRING(name,name)-1) else name end firstname,CASE WHEN CHARINDEX('_',name)>0 THEN SUBSTRING(name,name)+1,len(name)) ELSE NULL END as lastname from emp 您可以使用CASE命令来控制可用的姓氏. SQL Fiddle MS SQL Server 2008架构设置: 查询1: declare @t table (id int,name varchar(50)) insert into @t (id,name) values( 1,'abc_rao') insert into @t (id,name) values( 2,'nani') insert into @t (id,name) values( 3,'hari_babu') insert into @t (id,name) values( 4,'kalibabu') insert into @t (id,name) values( 5,'ab_tan') select case when CHARINDEX('_',len(name)) ELSE NULL END as lastname from @t Results: | FIRSTNAME | LASTNAME | |-----------|----------| | abc | rao | | nani | (null) | | hari | babu | | kalibabu | (null) | | ab | tan | 更新:sqlfiddle添加 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读