如何在sql查询中查找包含三个以上重复char ex:(Acabacaga)的输入 [英] how to find a input contains more than three repeating char ex:(Acabacaga) in sql query

查看:364
本文介绍了如何在sql查询中查找包含三个以上重复char ex:(Acabacaga)的输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,





我想找一个输入包含三个以上的重复字符,请建议我查询。



ex:



输入= Acabacaga



i希望restict输入shuld不包含超过三个重复的letter.upto 2 dullicate chr是好的..但是我不会收到三个或更多的dulicate字母。









提前致谢。



Rajshree V Lande。

hello guys,


I want to find A input contains more than three repeating chars,please suggest me query for that.

ex:

Input=Acabacaga

i want restict the input shuld not containing more than three duplicate letter.upto 2 dullicate chr is ok..but i shold not contatin three or more dulicate letters.




Thanks in advance.

Rajshree V Lande.

推荐答案

试试这个:

Try this:
DECLARE @input VARCHAR(30) = 'Acabacaga'

;WITH CTE AS
(
    SELECT CONVERT(VARCHAR(1),LEFT(@input,1)) AS Letter, RIGHT(@input, LEN(@input)-1) AS Remainder
    WHERE LEN(@input)>1
    UNION ALL
    SELECT CONVERT(VARCHAR(1),LEFT(Remainder,1)) AS Letter, RIGHT(Remainder, LEN(Remainder)-1) AS Remainder
    FROM CTE
    WHERE LEN(Remainder)>1
    UNION ALL
    SELECT CONVERT(VARCHAR(1),Remainder) AS Letter, NULL AS Remainder
    FROM CTE
    WHERE LEN(Remainder)=1
)
SELECT Letter, ASCII(Letter) AS CharCode, COUNT(Letter) AS CountOfLetter
FROM CTE
GROUP BY Letter, ASCII(Letter)
HAVING COUNT(Letter)>2





结果:



Result:

Letter	CharCode	CountOfLetter
a			97			4





如需了解更多信息,请参阅:常用表格表达式 [ ^ ]。换句话说,CTE摇滚!



For further information, please see: Common Table Expressions[^]. In other words, CTE rocks!


嗨Rajshree,



你可以尝试这个
Hi Rajshree,

You can try this
SELECT len('acabacaga') - len(replace('acabacaga','a','')) As NoOfTimesACharacterIsRepeated.





您可以将其输出存储在变量中并传递字符串类型和要作为变量匹配的字符。



问候,

Praneet



You can store its output in a variable and pass the string type and the character to match as variables.

Regards,
Praneet


ALTER FUNCTION [dbo]。[CheckValidString]



@input varchar(50)





退货varchar

AS

BEGIN



声明@inputLength integer = datalength(@input);

声明@intIndex integer = 1;

声明@intMaxCount整数= 3;

声明@singleChar字符(1);

声明@isValid字符(1);

而(1 = 1)

开始

如果@intIndex> @inputLength

开始

选择@isValid ='Y';

休息;

结束



选择@singleChar = substring(@input,@ intIndex,1)



if(@inputLength - datalength(replace (@input,@ singleChar,''))> @intMaxCount)

开始

选择@isValid ='N';

休息;

结束

选择@intIndex + = 1;

结束



返回@isValid

结束
ALTER FUNCTION [dbo].[CheckValidString]
(
@input varchar(50)

)
RETURNS varchar
AS
BEGIN

declare @inputLength integer = datalength(@input);
declare @intIndex integer = 1;
declare @intMaxCount integer = 3;
declare @singleChar Char(1);
declare @isValid Char(1);
while (1 = 1)
begin
if @intIndex > @inputLength
begin
select @isValid = 'Y';
break;
end

select @singleChar = substring(@input, @intIndex, 1)

if(@inputLength - datalength(replace(@input, @singleChar, '')) > @intMaxCount)
begin
select @isValid = 'N';
break;
end
select @intIndex += 1;
end

RETURN @isValid
END


这篇关于如何在sql查询中查找包含三个以上重复char ex:(Acabacaga)的输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆