根据字符串得到拼音首码

一、创建两个表并添加数据(t_e_ordinal序数 t_e_py_ordinal拼音序数)

/****** Object:  Table [dbo].[t_e_py_ordinal]    Script Date: 10/30/2013 17:05:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[t_e_py_ordinal](
	[ordinal] [nchar](1) NULL
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序数' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N't_e_py_ordinal', @level2type=N'COLUMN',@level2name=N'ordinal'
GO
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'吖')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'八')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'嚓')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'咑')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'妸')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'发')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'旮')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'铪')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'丌')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'丌')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'咔')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'垃')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'嘸')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'拏')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'噢')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'妑')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'七')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'呥')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'仨')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'他')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'屲')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'屲')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'屲')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'夕')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'丫')
INSERT [dbo].[t_e_py_ordinal] ([ordinal]) VALUES (N'帀')
/****** Object:  Table [dbo].[t_e_ordinal]    Script Date: 10/30/2013 17:05:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[t_e_ordinal](
	[ordinal] [int] NOT NULL,
 CONSTRAINT [PK_t_e_ordinal] PRIMARY KEY CLUSTERED 
(
	[ordinal] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (1)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (2)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (3)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (4)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (5)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (6)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (7)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (8)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (9)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (10)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (11)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (12)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (13)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (14)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (15)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (16)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (17)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (18)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (19)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (20)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (21)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (22)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (23)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (24)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (25)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (26)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (27)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (28)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (29)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (30)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (31)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (32)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (33)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (34)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (35)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (36)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (37)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (38)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (39)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (40)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (41)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (42)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (43)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (44)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (45)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (46)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (47)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (48)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (49)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (50)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (51)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (52)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (53)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (54)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (55)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (56)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (57)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (58)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (59)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (60)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (61)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (62)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (63)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (64)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (65)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (66)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (67)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (68)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (69)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (70)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (71)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (72)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (73)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (74)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (75)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (76)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (77)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (78)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (79)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (80)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (81)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (82)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (83)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (84)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (85)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (86)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (87)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (88)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (89)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (90)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (91)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (92)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (93)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (94)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (95)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (96)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (97)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (98)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (99)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (100)
INSERT [dbo].[t_e_ordinal] ([ordinal]) VALUES (101)

注:t_e_ordinal表最好插入五百万条数据


二、创建函数

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER function [dbo].[f_e_str2py](@ch_str varchar(8000))
returns varchar(8000)
as
/*
	描述:
		根据字符串得到拼音首码
	版本:
		时间		修改人		操作
	涉及:
		t_e_ordinal  序数
		t_e_py_ordinal  拼音序数
	输入参数:
		@ch_str 汉字串
	返回:
		varchar(8000)  拼音首码串
	变量:
		@py_str 拼音首码串
*/
begin
	declare @py_str varchar(8000)
	set @py_str=''

	select @py_str=@py_str+char(64+sum(1)) from (select substring(@ch_str,ordinal,1) ch,ordinal from t_e_ordinal where ordinal<=len(@ch_str)) _a
		join t_e_py_ordinal _b on _a.ch collate Chinese_PRC_CI_AS>=_b.ordinal collate Chinese_PRC_CI_AS
	group by _a.ordinal order by _a.ordinal

	return @py_str
end




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值