mysql 正则匹配内容查询、拼接sql语句

33 篇文章 0 订阅


-- -- 广告评论删除

-- SELECT count(ID) FROM t_article_comment WHERE CONTENT REGEXP "[0-9]{8}" and CONTENT REGEXP '[^0-9.]';
-- 
-- 
-- SELECT * FROM t_article_comment WHERE CONTENT REGEXP "[0-9]{8}" and CONTENT REGEXP '[^0-9.]';
-- 
-- 
-- SELECT count(tc.ID) FROM t_article_comment as tc LEFT JOIN t_app_user as tu on tu.ID = tc.CREATOR 
-- WHERE CONTENT REGEXP "[0-9]{8}" and CONTENT REGEXP '[^0-9.]';
-- 
-- 
-- SELECT tc.*,tu.ID as userID,tu.NICK_NAME,concat('UPDATE t_app_user SET `status`=2 where ID= "',tu.ID,'";') as sqltxt FROM t_article_comment as tc LEFT JOIN t_app_user as tu on tu.ID = tc.CREATOR 
-- WHERE CONTENT REGEXP "[0-9]{8}" and CONTENT REGEXP '[^0-9.]';


-- SELECT * FROM t_article_comment WHERE CONTENT REGEXP "[0-9]{8}" and CONTENT REGEXP '[^0-9.]';
-- 
-- DELETE FROM t_article_comment WHERE CONTENT REGEXP "[0-9]{8}" and CONTENT REGEXP '[^0-9.]'

-- 恢复评论数

-- update t_article set COMMENT_COUNT = where 

-- select ID, COMMENT_COUNT from t_article as t LEFT JOIN t_article_comment as tc on tc.ARTICLE_ID = t.ID;

select ARTICLE_ID,count(ID),CONCAT('update t_article set COMMENT_COUNT = ',count(ID),' where ID = "',ARTICLE_ID,'";') as sqlTxt from t_article_comment GROUP BY ARTICLE_ID;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 中,冒号(:)是正则表达式中的一个特殊字符,用于指定一个命名捕获组。命名捕获组是一个正则表达式中的子表达式,它用于匹配一些特定的模式,并将匹配的结果分组存储起来。通过命名捕获组,我们可以在正则表达式中引用这些分组,并对其进行后续的操作。 例如,下面的正则表达式用于匹配一个包含数字和字母的字符串,并将其分成两个捕获组: ```mysql SELECT 'ab123cd' REGEXP '([a-z]+)([0-9]+)'; ``` 这里的正则表达式中包含了两个捕获组:`([a-z]+)` 和 `([0-9]+)`。第一个捕获组用于匹配一个或多个字母字符,第二个捕获组用于匹配一个或多个数字字符。如果字符串 `ab123cd` 匹配成功,则返回结果为 1。 在命名捕获组中,我们可以给每个捕获组指定一个名称,以便后续的操作。例如,下面的正则表达式用于匹配一个包含数字和字母的字符串,并将其分成两个命名捕获组: ```mysql SELECT 'ab123cd' REGEXP '(?<letters>[a-z]+)(?<numbers>[0-9]+)'; ``` 这里的正则表达式中包含了两个命名捕获组:`(?<letters>[a-z]+)` 和 `(?<numbers>[0-9]+)`。第一个命名捕获组用于匹配一个或多个字母字符,并将其命名为 `letters`,第二个命名捕获组用于匹配一个或多个数字字符,并将其命名为 `numbers`。如果字符串 `ab123cd` 匹配成功,则返回结果为 1。 在使用命名捕获组时,我们可以在正则表达式中通过名称来引用这些分组。例如,下面的正则表达式用于匹配一个包含数字和字母的字符串,并将其分成两个命名捕获组: ```mysql SELECT 'ab123cd' REGEXP '(?<letters>[a-z]+)(?<numbers>[0-9]+)' AS result; SELECT CONCAT('Letters: ', REGEXP_REPLACE('ab123cd', '(?<letters>[a-z]+)(?<numbers>[0-9]+)', '${letters}')) AS letters; SELECT CONCAT('Numbers: ', REGEXP_REPLACE('ab123cd', '(?<letters>[a-z]+)(?<numbers>[0-9]+)', '${numbers}')) AS numbers; ``` 这里的第一个 SQL 语句用于匹配字符串 `ab123cd` 并返回结果,第二个 SQL 语句用于获取命名捕获组 `letters` 的值,并将其与字符串 `Letters: ` 进行拼接后返回结果,第三个 SQL 语句用于获取命名捕获组 `numbers` 的值,并将其与字符串 `Numbers: ` 进行拼接后返回结果。如果字符串 `ab123cd` 匹配成功,则返回结果为: | result | letters | numbers | | ------ | ------- | ------- | | 1 | Letters: ab | Numbers: 123 | 因此,冒号在 MySQL 中的作用是指定正则表达式中的命名捕获组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值