如何从字符串中返回所有字符并在sql中计算。
如果字符串是“你好吗”
它应该返回
字数
2
h 1
o 2
w 1
a 1
r 1
e 1
y 1
u 1
答案 0 :(得分:1)
您可以使用此脚本。它将为您提供您所需要的。 这个只计算字符串中的字母。
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
答案 1 :(得分:0)
您可以使用客户tsql函数,请参阅http://gallery.technet.microsoft.com/scriptcenter/T-SQL-Script-to-Split-a-308206f3。
您可以使用group by
和count
声明来查询问题吗?
答案 2 :(得分:0)
这将返回您请求的结果集。它通过将每个字母添加到临时表中的新行,然后查询结果以返回每次出现字符的计数来完成此操作。
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;