一、创建两个表并添加数据(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