表中有某个字段来记录名字的拼音,现在显示时要按用户的要求显示格式如
Chun Xia Song 要显示成 Song C.X
LiXie 要显示成 Xie L
Chen Xi Ou Yang 要显示成 Ou Yang C.X
要怎么转换?名字有四个字时比较特别
Chun Xia Song 要显示成 Song C.X
LiXie 要显示成 Xie L
Chen Xi Ou Yang 要显示成 Ou Yang C.X
要怎么转换?名字有四个字时比较特别
解决方案 »
- 难道这就是传说中分布式数据处理
- group by a,b,c和group by b,c,a 的区别?
- 消息 50001,级别 1,状态 50001 xpsql.cpp: 错误 5 来自 CreateProcess(第 737 行)
- 扇区512字节转移到扇区4096字节磁盘问题,高手帮下忙,谢谢
- 一个很急的问题,SQL2000和SQL2005同时安装后的连接问题
- 求一条更新语句,急!!
- 老师,这些是什么表来的
- zjcxc(邹建)进,很难呀~~有挑战性~~(对我而言)
- 帮忙看下这个问题
- 同表中的2行数据全部进行对比,取出不同的数据
- varchar转化为decimal类型问题
- SQLSERVER 跨實例怎麼執行DBCC命令
declare @sql varchar(1000)
declare @i int
declare @a int
declare @n1 int
declare @n2 int
declare @n3 int
declare @n4 int
set @a=0
set @i=0
declare c_cur cursor
for select name from test
open c_cur
fetch next from c_cur into @namewhile @@fetch_status=0
begin
set @a=0
set @i=0
set @n1=0
set @n2=0
set @n3=0
set @n4=0
while @i <= len(@name)
begin
if ascii(right(left(@name,@i),1))>=65 and ascii(right(left(@name,@i),1))<=90
begin
set @a=@a+1
if @a=1
set @n1=@i
if @a=2
set @n2=@i
if @a=3
set @n3=@i
if @a=4
set @n4=@i
end
set @i=@i+1
end
if @a>2
begin
print right(@name,len(@name)+1-@n3)+' '+right(left(@name,@n1),1)+'.'+right(left(@name,@n2),1)
end
else
begin
print right(@name,len(@name)+1-@n2)+' '+right(left(@name,@n1),1)
end
fetch next from c_cur into @name
end
close c_cur
deallocate c_cur
--写个函数试试
GO
IF OBJECT_ID('Fun_test')IS NOT NULL
DROP FUNCTION Fun_test
GO
CREATE FUNCTION Fun_test(@name varchar(20))
RETURNS VARCHAR(20)
AS
BEGIN
--IF CHARINDEX(' ',@name)>0
--begin
declare @str varchar(20)
set @str=''
declare @firstname varchar(10)
declare @midname varchar(10)
declare @lastname varchar(10)
select @firstname=(left(@name,charindex(' ',@name)-1))
select @midname=(substring(@name,charindex(' ',@name)+1,charindex(' ',@name,charindex(' ',@name))))
select @lastname=reverse(left(reverse(@name),len(@name)-3-charindex(' ',@name,charindex(' ',@name))))
select @str=@lastname+' '+left(@firstname,1)+'.'+left(@midname,1)
return @str
--end
END
go
GO
CREATE TABLE #TEST(
NAME VARCHAR(20)
)
INSERT #TEST
SELECT 'Chen Xi Ou Yang' UNION ALL
SELECT 'Chun Xia Song'
SELECT dbo.Fun_test(NAME) AS NEMAE FROM #TEST
/*
NEMAE
Ou Yang C.X
Song C.X
*/