存储过程,计算一个字符串中每一个字母的数量,今晚有效
source link: https://ask.csdn.net/questions/7542350
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
存储过程,计算一个字符串中每一个字母的数量,今晚有效
创建了一张表,如下
CREATE TABLE label_table (
company varchar(200) PRIMARY KEY ,
label varchar(255),
label_num varchar(255)
);
第一列插入内容举例为A,B,C
第二列插入内容为纯字母无规律字符串,例如'hjdk','dfdkldg'
插入时,两个参数需要一起提供,例如('A','gdhjk')
如果A不存在,则插入以上内容,如果表中已经存在主键A,则第二个字段追加在已有字段之后,
例如表中已经存在(A,dhk)
再插入(A,jd),则最终字段为(A,dhkjd)
所以存储过程需要提供两个输入参数
以下这句似乎能达到类似的效果,仅作参考
INSERT INTO label_table VALUES('B', 'dfg')
ON DUPLICATE KEY UPDATE label=concat(label,'dfg');
例如现在表中有了这么两行数据
A,tyutyt
B,werwe
那么我希望表中第三列这样显示
A,tyutyt,t3y2u1
B,werwe, w2e2r1
也就是第三列是第二列对每个字母数量的统计,格式不限,只需要统计出每个字母的数量即可
4条回答 默认 最新
- simtoba 2021-10-23 14:49
create proc p1 @n1 varchar(200),@n2 varchar(255) AS
DECLARE @t int,@i int,@str varchar(255),@s char(1),@str1 varchar(255),@s1 char(1)
select @t=count(company) from test1 where company=@n1
if @t>0
update test1 set label=label+@n2 where company=@n1
else
insert into test1 (company,label) values(@n1,@n2)
select @str=label from test1 where company=@n1
set @i=0
set @s=substring(@str,1,1)
set @str1=''
while @i<len(@str)+1
begin
set @i=@i+1
if @i=1
begin
set @t=len(@str)-len(replace(@str,@s,''))
set @str1=@str1 + @s + trim(str(@t))
end
if substring(@str,@i,1)<>@s and @i>1
begin
set @s1=substring(@str,@i,1)
set @t=len(@str)-len(replace(@str,@s1,''))
set @str=replace(@str,@s1,@s)
set @str1=@str1 + @s1 + trim(str(@t))
end
endupdate test1 set label_num = @str1 where company=@n1
赞 踩 打赏 评论 - 大榕树51 2021-10-23 17:08
DELIMITER //
CREATE PROCEDUREcount_lable
(
IN c_company VARCHAR ( 200 ),
IN c_label VARCHAR ( 255 ),
IN c_label_num VARCHAR ( 255 ),
)
BEGINDECLARE idx int, jdex int, c_c VARCHAR (1), c_temp VARCHAR (255), temp_label VARCHAR (255);
DECLARE select_label VARCHAR (255);
DECLARE row_count INT;
set select_label = ELECT label from label_table where company = c_company;
set idx = 1
set temp_label = CONCAT(select_label, c_label)
while idx <= len(temp_label)
begin
set c_c = substring(temp_label, idx, 1)-- 取得idx所在的这个字符
set jdex = length(temp_label)-length(replace(temp_label, c_c ,''))
set c_temp =CONCAT(c_c, convert(varchar(20), jdex));
set c_label_num = CONCAT(c_label_num, c_temp);
set idx = idx + 1
endSELECT count(*) INTO row_count from label_table where company = c_company;
IF (row_count=0) THEN
INSERT INTO label_table( company, label, label_num) VALUES(company, temp_label, c_label_num);
ELSE
UPDATE label_table SET SET label = temp_label, label_num = c_label_num WHERE company = c_company;
END IF;COMMIT;
END赞 踩 打赏 评论 - 广大菜鸟 2021-10-24 07:14
可能是版本问题,前面的几位写的不错,但我的版本显示不了一些函数,我学习后也写了,希望对题主有帮助
1、创建表格2、定义存储过程
3. 测试,插入空字符串,相对应更新
赞 踩 打赏 评论
报告相同问题?
相关推荐 更多相似问题
- 回答 3 已采纳 小写字母包括a到z,一共26个英文字母。 区分字符串中的字符属于特殊符号,或者是小写字母和大写字母,其本质是每个字符在Unicode编码中对应一个数字。a对应数字编码为97,z对应数字的编码
-
回答 2 已采纳 a=input('type some letters:') z = {x:a.count(x) for x in set([n for n in a])} print(z)
-
回答 3 已采纳
# 用正则表达式把不是字母的字符都删除。 import re
s1 = "2aA3bB5" s2 = re.sub(r'[^A-Za-z]','',s1) print(s2)
# 用fo
- 2020-05-13 07:46i++){//以i为A中“子字符串”首位,遍历B,看B中与A[i]起的子字符串最大匹配数量是多少,记为count[i],每个count[i]对应A中一个字符 for(j = 0;j (B);j++){ while(A[i + c] == B[j]){//准备了一个c做偏移,...
- 2020-03-18 09:08冰块儿+奶茶的博客 计算一个字符串中每个字符出现的次数 分析: 1.使用Scanner获取用户输入的字符串 2.创建Map集合,key是字符串中的字符,value是字符的个数 3.遍历字符串,获取每一个字符 4.使用获取到的字符,去Map集合判断key是否...
- 2017-09-18 05:13Aseveng的博客 package Map.Test; import java.util.Iterator;... * gdhavcbsacdfs 获取该字符串中 每一个字母出现的次数 * 要求打印结果是 :a{2} b{1}....; * 思路: * 对于结果的分析发现 ,字母和次数之间存在着映射的关系
- 回答 4 已采纳 lb = ["a", "b", "d"] s = "asdaeqwezxcsdxvsr"; num = 0 for item in lb: num += s.count(item) prin
-
回答 2 已采纳 这个针对你上面的是可以的,如果要想加一些的自适应的代码,可以自己加一点. ``` #include
int main() { char str[5] = "abcd"; int
- 2019-07-12 01:33
回答 4 已采纳
How to remove the last letter from the string?
In Go, character strings are UTF-8 encoded.
- 2019-04-13 13:23timekeeper_guo的博客 获取字符串中每个字母出现的次数,格式a(2)b(0)c(2) 思路: 能存储映射关系的容器有数组和map集合(set虽然保证了唯一性,但是不能存储映射关系) 关系一方不存在有序编号,使用map,还可以保证唯一性的一方具备着...
- 2020-01-19 12:04Rookie_Max的博客 计算字符中每个字符出现的数量,不使用count方法 "abacdce" a出现的次数是2次 b出现的次数是1次 c出现的次数是2次 d出现的次数是1次 e出现的次数是1次 """ string = input("请输入任意字符:") dict01 =...
- 2017-10-21 07:57Anthony_tester的博客 不管是自动化测试,还是测试开发,或者高级测试工程师,国内很多公司都...给出一个字符串,统计出每个字母出现的次数。 思路分析: 需要统计字母和字母出现次数,这个第一反应就想起了编程语言中的字典概念,字母
- 回答 4 已采纳 如下: public static void main(String[] args) { // TODO Auto-generated method stub Scan
- 回答 2 已采纳 通过ASCII码就行,很简单。
- 回答 2 已采纳 String 本身就有 length 属性可以获取长度的,将长度存入数组的话,就是数组的基本用法呢。 学而不思则罔呀!
- 2019-04-11 10:56肖佳嘉的博客 附上代码 ... import java.util.HashMap; public class Case6_Map_4 { public static void main(String[] args) { //创建字符串 final String s = "aaaaaabbbbbbbccccccdddddeeeeeffffffggg...
- 2018-10-29 05:43小时候挺菜的博客 unsigned int str_num(char *str[], int num[], int len) { int i, j; int count; int flag[len]; for (i = 0;...利用一个数组,记录每个字符串的个数,另一个flag数组标记已经计数过的字符串
- 2021-02-08 09:42秋了个白的博客 编写程序输入一个字符串,分别统计输出该字符串中的字母个数和数字个数 算法分析:判断字母和数字的核心方法是依靠 ASCII 码进行,所以对字符串中的每个字符逐个判断即可得到结果。实现方法依然是依靠指针。 程序...
-
回答 7 已采纳
``` public string GetSubstring(string s) { string r = ""; int cha
- 2020-08-14 10:22谢永奇1的博客 关于计算一个字符串中存在的相同字符串个数 这个代码采用了比较简单的思路做的,没有储存起来这是比较不好的一个地方,但是也比较容易让人接受 思路: 循环每一个与最后一个比较,计算出个数,然后 防止重复输出...
- 没有解决我的问题, 去提问
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK