SQL Server计算汉字笔画部首

/*
有一个成语表,请计算
1)每个字笔画数都相同的成语
2)每个字都含有偏旁三点水或火字旁的成语
*/

--创建汉字词典
CREATE TABLE myHanzi (
	id INT NOT NULL,
	zi Nvarchar(255),
	py varchar(255),
	wubi varchar(255),
	bushou Nvarchar(255),
	bihua INT,
	pinyin varchar(255),
	PRIMARY KEY (id)
);
GO
SELECT *  FROM myHanzi WITH(nolock)
 
GO 
--创建一个函数,判断一个词的部首都是啥啥
CREATE FUNCTION ft_checkbushou(@Val NVARCHAR(200),@bushou NVARCHAR(20))  
RETURNS BIT
AS
BEGIN   
	DECLARE @cnt INT 
	DECLARE @bu NVARCHAR(20)
	DECLARE @rst BIT=0 
	SELECT @cnt=COUNT(DISTINCT A.bushou),@bu=MAX(A.bushou) FROM dbo.myHanzi A INNER JOIN
	(
		SELECT SUBSTRING(@Val,number,1) AS zi FROM master..spt_values WHERE type='P' AND number BETWEEN 1 AND LEN(@Val)
	) B ON A.zi=B.zi

	IF @cnt=1 AND @bu=@bushou
	SET @rst = 1

	RETURN @rst
END 
GO
 
--创建一个函数,判断一个词的笔画都是啥啥
CREATE FUNCTION ft_checkbihua(@Val NVARCHAR(200),@bihua INT)  
RETURNS BIT
AS
BEGIN   
	DECLARE @cnt INT 
	DECLARE @bi INT
	DECLARE @rst BIT=0 
	SELECT @cnt=COUNT(DISTINCT A.bushou),@bi=MAX(A.bihua) FROM dbo.myHanzi A INNER JOIN
	(
		SELECT SUBSTRING(@Val,number,1) AS zi FROM master..spt_values WHERE type='P' AND number BETWEEN 1 AND LEN(@Val)
	) B ON A.zi=B.zi

	IF @cnt=1 AND @bi=@bihua
	SET @rst = 1

	RETURN @rst
END 
GO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值