-1
我想将名称字段分隔到适当的字段中。名称字段不一致。它可以显示为李四III,约翰·w^或DOE,约翰,或李四III,约翰,或李四,约翰·w^或者它可能缺乏的后缀,或中间名首字母。任何想法将不胜感激。解析SQL中的名称字段
SELECT (
CASE LEN(REPLACE(FirstName, ' ', ''))
WHEN LEN(FirstName + ' ') - 1
THEN PARSENAME(REPLACE(FirstName, ' ', '.'), 2)
ELSE PARSENAME(REPLACE(FirstName, ' ', '.'), 3)
END
) AS LastName
,(
CASE LEN(REPLACE(FirstName, ' ', ''))
WHEN LEN(FirstName + ',') - 1
THEN NULL
ELSE PARSENAME(REPLACE(FirstName, ' ', '.'), 2)
END
) AS Suffix
,PARSENAME(REPLACE(FirstName, ' ', '.'), 1) AS FirstName
FROM Trusts.dbo.tblMember
我所需要的名字无论何种格式,如上所述,为了解析成名字,后缀,姓,MiddleInitial,的相应的字段而不管其是否具有一个后缀或一个中间初始
请参阅[如何提出一个很好的SQL问题(https://meta.stackoverflow.com/a/271056/5234334),并提及你的数据库,预期的结果,样本数据 – Utsav
我曾尝试以下内容: \t(LEN(REPLACE(FirstName,'',''))LEN(FirstName +'') - 1 then PARSENAME(REPLACE(FirstName,'','。'),2) (LEN(REPLACE(FirstName,'','')),当LEN(FirstName +',') - 1时,返回PARSENAME(REPLACE(FirstName,'','。'),3)end)作为LastName, \t然后null否则PARSENAME(REPLACE(FirstName,'','。'),2)end)作为后缀, \t PARSENAME(替换(名字,'','。'),1)作为名字 来自Trusts.dbo.tblMember – Marshall
然后问题是非常含糊不清样本数据,它处理所有的情况和您的预期输出基于此。使用rextester.com创建表并在SQL服务器中插入示例行,并根据这些信息告诉我们您的预期输出。 – Utsav