Mic*_*l A 0 sql t-sql sql-server-2008
我有一个列以全名格式存储数据,例如:
汤姆史密斯
安德鲁史密斯
是否有一个函数(或函数的组合),我可以使用它将其转换为以下内容:
T.史密斯
A.史密斯
您应该分别存储名字和姓氏.同时:
SELECT CASE WHEN FullName LIKE '% %' THEN
LEFT(FullName, 1) + '.' + SUBSTRING(FullName, CHARINDEX(' ', FullName), 255)
ELSE FullName END
FROM dbo.table;
Run Code Online (Sandbox Code Playgroud)
另一种选择:
SELECT COALESCE(LEFT(FullName, 1)
+ '.' + SUBSTRING(FullName, NULLIF(CHARINDEX(' ', FullName), 0), 255),
FullName)
FROM dbo.table;
Run Code Online (Sandbox Code Playgroud)
这两个都处理单词名称,如Prince或Madonna- 但他们不能正确处理你有中间名称的情况.那种情况下的问题是:
John Wayne Bobbitt
Billy Ray Cyrus
Lisa Van der Wal
Lee Harvey Oswald
Dennis Moseley Williams
James de Caan
Run Code Online (Sandbox Code Playgroud)
你如何确定哪些是中间名,哪些是多字姓呢?如果你正在处理这种情况,那就开始更加努力地摇动你的拳头.