Sql 从字符串中返回单独的字符
如何返回字符串中的所有字符并在sql中对其进行计数 如果字符串是,你怎么样 它应该会回来 焦数Sql 从字符串中返回单独的字符,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,如何返回字符串中的所有字符并在sql中对其进行计数 如果字符串是,你怎么样 它应该会回来 焦数 2 h 1 o 2 w 1 a 1 r 1 e 1 y 1 u 1 您可以使用customer tsql函数,请参阅 您可以使用group by和count语句进行查询以解决问题。您可以使用此脚本。它会给你你所需要的。 这个只计算字符串中的字母 declare @c int declare @ch varchar(10) declare @str varch
2
h 1
o 2
w 1
a 1
r 1
e 1
y 1
u 1
您可以使用customer tsql函数,请参阅
您可以使用group by和count语句进行查询以解决问题。您可以使用此脚本。它会给你你所需要的。 这个只计算字符串中的字母
declare @c int
declare @ch varchar(10)
declare @str varchar(max)
set @str = 'how are you'
declare @letter int
declare @i int
set @i = 1
create table #tbl(ch varchar(10), cnt int)
while (@i <= len(@str))
begin
set @letter = 0
set @ch = substring(@str, @i, 1)
select @c = count(*) from #tbl
where ch = @ch
if ( (@ch >= 'a' and @ch <= 'z') or (@ch >= 'A' and @ch <= 'Z') )
begin
set @letter = 1
end
if (@c = 0)
begin
if (@letter = 1)
begin
insert into #tbl (ch, cnt) values (@ch, 1)
end
end
else
begin
update #tbl set cnt = cnt + 1 where ch = @ch
end
set @i = @i + 1
end
select * from #tbl
drop table #tbl
如果你想数一数所有的字符而不仅仅是字母,
这就更容易了。使用此脚本
declare @c int
declare @ch varchar(10)
declare @str varchar(max)
set @str = 'how are you'
declare @i int
set @i = 1
create table #tbl(ch varchar(10), cnt int)
while (@i <= len(@str))
begin
set @ch = substring(@str, @i, 1)
select @c = count(*) from #tbl
where ch = @ch
if (@c = 0)
begin
insert into #tbl (ch, cnt) values (@ch, 1)
end
else
begin
update #tbl set cnt = cnt + 1 where ch = @ch
end
set @i = @i + 1
end
select * from #tbl
drop table #tbl
这将返回您请求的结果集。它通过获取每个字母并将其添加到临时表中的新行,然后查询结果以返回字符每次出现的计数来完成此操作
DECLARE @individual CHAR(1);
DECLARE @text NVARCHAR(200)
SET @text = 'how are you';
IF OBJECT_ID('tempdb..#tmpTable') IS NOT NULL
DROP TABLE #tmpTable
CREATE TABLE #tmpTable (letter char(1));
WHILE LEN(@text) > 0
BEGIN
SET @individual = SUBSTRING(@text, 1, 2)
INSERT INTO #tmpTable (letter) VALUES (@individual);
SET @text = SUBSTRING(@text, 2, LEN(@text))
END
SELECT letter, COUNT(*) AS [count]
FROM #tmpTable
GROUP BY letter;
SQL为什么要这样做?SQL不是一种编程语言,它是一种数据存储和数据检索软件。您所描述的内容可以通过编码语言轻松解决。这是我数据库查询的一部分。如果您需要返回包含字母“o”最高出现次数的所有行的查询,该怎么办?看起来有点复杂,但仍然很有趣。他在问,把字符串分解成它的组件,在我的原始字符串中寻找这个组件,返回数字。这不是SQL,这太疯狂了:}它将返回升序Oreder中字符串中的字符。你可以告诉我从tbl中选择@c=count*,其中ch=@ch在这一行之前,只创建了表,因此如何将ch与@ch进行比较?ch是tbl中的列名。@ch只是一个变量,它的名称与ch不同。因此,在这个脚本中,这是两个不同事物的两个不同名称。我试图说最初表是空的。从tbl中选择@c=count*,其中ch=@ch,那么我们如何从中获得值?对,但我随后检查@c是否为0,如果是,我在tbl中插入一行。如果@c不是零,我会更新我们所使用的特定字符的现有行。