创建 汉字与拼音以及拼音首字母的映射表 yuanwen 汉字原文 shouzimu 首字母 quanpin 全拼 times 查询次数
IF OBJECT_ID ('dbo.keyword') IS NOT NULL DROP TABLE dbo.keyword GO CREATE TABLE dbo.keyword ( id INT IDENTITY NOT NULL, yuanwen NVARCHAR (500) NOT NULL, shouzimu NVARCHAR (200) NOT NULL, quanpin NVARCHAR (500) NOT NULL, times INT NOT NULL ) GO
创建 文章表 title_strid 标题 对应的映射表里的id key_strid关键字对应的映射表里的id content 内容
IF OBJECT_ID ('dbo.article') IS NOT NULL DROP TABLE dbo.article GO CREATE TABLE dbo.article ( id INT IDENTITY NOT NULL, title_strid INT NOT NULL, key_strid INT NOT NULL, content TEXT NOT NULL ) GO
创建添加文章的存储过程 首先查询添加的title 在映射表里是否存在 不存在 就往映射表里 添加一条数据,并获取新插入数据的id 存在 直接获取对应的id
keyword 同理 最后 将获取的 两个id 和 传入的content 插入到article表里
ALTER PROCEDURE [dbo].[AddArticle] @title NVARCHAR(500), @tshouzimu NVARCHAR(200), @tquanpin NVARCHAR(500), @keyword NVARCHAR(500), @kshouzimu NVARCHAR(200), @kquanpin NVARCHAR(500), @content TEXT AS BEGIN DECLARE @kid INT DECLARE @tid INT SET @tid = (SELECT id FROM keyword WHERE yuanwen=@title) IF (isnull(@tid,0)=0) BEGIN INSERT INTO keyword VALUES(@title,@tshouzimu,@tquanpin,1) SET @tid = SCOPE_IDENTITY() END SET @kid = (SELECT id FROM keyword WHERE yuanwen=@keyword) IF (isnull(@kid,0)=0) BEGIN INSERT INTO keyword VALUES(@keyword,@kshouzimu,@kquanpin,1) SET @kid = SCOPE_IDENTITY() END INSERT INTO article VALUES(@tid,@kid,@content) END GO
按照全拼查询的存储过程 keyword是大写无空格的全拼
ALTER PROCEDURE SelectKey @keyword NVARCHAR(500) AS BEGIN SELECT yuanwen FROM keyword WHERE quanpin LIKE ''+@keyword+'%' ORDER BY times DESC; END GO
根据原文查询的存储过程 keyword是大写无空格的原文
ALTER PROCEDURE SelectKey2 @keyword NVARCHAR(500) AS BEGIN SELECT yuanwen FROM keyword WHERE yuanwen LIKE '%'+@keyword+'%' ORDER BY times DESC; END GO
根据首字母查询的存储过程 keyword是大写无空格的首字母
ALTER PROCEDURE SelectKey3 @keyword NVARCHAR(500) AS BEGIN SELECT yuanwen FROM keyword WHERE shouzimu LIKE '%'+@keyword+'%' ORDER BY times DESC; END GO