我们的表中有一个字段为LastName,FirstName(FromSomewhere)
,我需要将字符串分隔成
lastNAme firstname
并使用select语句忽略(FromSomewhere)
。任何帮助都非常感谢。
我试过
Select substring(
LEFT(_Owner, charindex('(', _Owner) - 1),
charindex(',', _Owner) + 1, len(LEFT(_Owner, charindex('(', _Owner) - 1)))
from CC;
是我试过的,我得到一个错误
Msg 536,Level 16,State 5,Line 1传递给SUBSTRING函数的长度参数无效。
答案 0 :(得分:2)
假设您使用的是sql-server 2005或更高版本:
<强> Fiddle demo 强>
;with cte as (
select _Owner, charindex(',',_Owner) first, charindex('(',_Owner) second
from CC
)
select left(_Owner,first-1) lastName,
substring(_Owner, first+1, second - (first+1)) firstName
from cte
答案 1 :(得分:0)
长度
是一个正整数或bigint表达式,指定了多少个 将返回表达式的字符。如果长度为负, 生成错误并终止语句。如果总和 start和length大于in中的字符数 表达式,返回从start开始的整个值表达式。
答案 2 :(得分:0)
只要您只执行一次(将数据拆分为FirstName,LastName的单独列),您就可以这样做。如果你想在常规查询中使用以下技术,那么性能会很糟糕。
declare @myString nvarchar(200) = 'LastName,FirstName(FromSomewhere)'
select SUBSTRING(@myString, 1, CHARINDEX(',', @myString, 1) - 1),
SUBSTRING(@myString, CHARINDEX(',', @myString, 1) + 1, CHARINDEX('(', @myString, 1) - CHARINDEX(',', @myString, 1) - 1)