我知道这个问题已经被问过几次了,我已经可以使用在StackOverflow上找到的结果找到部分答案。我有一列包含“ LastName FirstName”的名称组合,我需要在行中显示“ FirstName LastName。我可以使用以下SQL代码来实现:
SELECT
SUBSTRING('First Last', CHARINDEX(' ', 'First Last') + 1, 8000) +' '+
SUBSTRING('First Last', 1, CHARINDEX(' ', 'First Last') - 1) AS Name
现在,当我尝试使用具有以下代码的数据来使用此代码时:
SUBSTRING(Rtrim(Ltrim(name)), CHARINDEX(' ', Rtrim(Ltrim(name))) + 1,
8000) +' '+ SUBSTRING(Rtrim(Ltrim(name)), 1, CHARINDEX(' ',
Rtrim(Ltrim(name))) - 1) AS Name
FROM
VW_MyView
我得到了预期的结果,但同时也收到一条错误消息,指出
传递给LEFT或SUBSTRING函数的长度参数无效。
我已将错误跟踪到带有连字符的名称。在此过程中我该如何处理这些连字符
答案 0 :(得分:0)
嗯。 。 。
如果只有一个或两个名称用空格隔开:
select (stuff(name, 1, charindex(' ', name + ' ') - 1, '') + ' ' +
left(name, charindex(' ', name + ' ') - 1)
)
请注意,这会附加一个空格,以便charindex()
返回有效位置。